Skip to content

Commit 81bb72b

Browse files
authored
Merge pull request #23 from TaloDev/develop
Release 0.6.0-pre.0
2 parents 69fb2fc + 1fc2ecc commit 81bb72b

File tree

15 files changed

+148
-185
lines changed

15 files changed

+148
-185
lines changed

.github/workflows/create-release.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ on:
99
jobs:
1010
release:
1111
runs-on: ubuntu-latest
12+
13+
env:
14+
COMMIT_EMAIL: 7089284+tudddorrr@users.noreply.github.com
15+
COMMIT_MESSAGE: "Release https://github.com/TaloDev/unity/releases/tag/${{ github.ref_name }}"
16+
1217
steps:
1318
- uses: actions/checkout@v2
1419

@@ -22,16 +27,29 @@ jobs:
2227
cp -a Packages/com.trytalo.talo/. Release
2328
cp -a Assets/. Release/Samples~/Playground
2429
25-
- name: Copy to package repo
30+
- name: Copy to package repo (main branch)
31+
uses: cpina/github-action-push-to-another-repository@main
32+
if: "!contains(github.event.head_commit.message, '--no-release') && !contains(github.event.head_commit.message, 'pre.')"
33+
env:
34+
API_TOKEN_GITHUB: ${{ secrets.PAT }}
35+
with:
36+
source-directory: Release
37+
destination-github-username: TaloDev
38+
destination-repository-name: unity-package
39+
user-email: ${{ env.COMMIT_EMAIL }}
40+
commit-message: ${{ env.COMMIT_MESSAGE }}
41+
42+
- name: Copy to package repo (version branch)
2643
uses: cpina/github-action-push-to-another-repository@main
2744
env:
2845
API_TOKEN_GITHUB: ${{ secrets.PAT }}
2946
with:
3047
source-directory: Release
3148
destination-github-username: TaloDev
3249
destination-repository-name: unity-package
33-
user-email: 7089284+tudddorrr@users.noreply.github.com
34-
commit-message: "Release https://github.com/TaloDev/unity/releases/tag/${{ github.ref_name }}"
50+
user-email: ${{ env.COMMIT_EMAIL }}
51+
commit-message: ${{ env.COMMIT_MESSAGE }}
52+
target-branch: ${{ github.ref_name }}
3553

3654
- name: Create artifact
3755
run: |
@@ -43,4 +61,5 @@ jobs:
4361
if: "!contains(github.event.head_commit.message, '--no-release')"
4462
with:
4563
generate_release_notes: true
64+
prerelease: ${{ contains(github.event.head_commit.message, 'pre.') }}
4665
files: Release/*.tgz

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,6 @@ sysinfo.txt
5959
crashlytics-build.properties
6060

6161
# Settings asset
62-
Talo Settings.asset*
62+
Talo Settings.asset*
63+
64+
.DS_Store
Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,60 @@
11
using System;
22
using UnityEngine;
3-
using System.Net.Http;
43
using System.Threading.Tasks;
4+
using UnityEngine.Networking;
55

66
namespace TaloGameServices
77
{
88
public class BaseAPI
99
{
10-
protected TaloSettings settings;
10+
protected TaloManager manager;
1111
protected string baseUrl;
12-
private readonly HttpClient client;
1312

14-
public BaseAPI(TaloSettings settings, HttpClient client, string service)
13+
public BaseAPI(TaloManager manager, string service)
1514
{
16-
this.settings = settings;
17-
this.client = client;
18-
baseUrl = $"{settings.apiUrl}/{service}";
15+
this.manager = manager;
16+
baseUrl = $"{manager.settings.apiUrl}/{service}";
1917
}
2018

21-
protected async Task<string> Call(HttpRequestMessage req)
19+
protected async Task<string> Call(Uri uri, string method, string content = "")
2220
{
23-
try
21+
byte[] json = new System.Text.UTF8Encoding().GetBytes(content);
22+
23+
using (UnityWebRequest www = new UnityWebRequest(uri, method))
2424
{
25-
req.Headers.Add("Authorization", $"Bearer {settings.accessKey}");
26-
var res = await client.SendAsync(req);
27-
string body = await res.Content.ReadAsStringAsync();
25+
if (json.Length > 0) www.uploadHandler = new UploadHandlerRaw(json);
26+
www.downloadHandler = new DownloadHandlerBuffer();
27+
28+
www.SetRequestHeader("Authorization", $"Bearer {manager.settings.accessKey}");
29+
www.SetRequestHeader("Content-Type", "application/json");
30+
www.SetRequestHeader("Accept", "application/json");
31+
32+
var op = www.SendWebRequest();
2833

29-
if (res.IsSuccessStatusCode)
34+
while (!op.isDone)
3035
{
31-
return body;
36+
await Task.Yield();
37+
}
38+
39+
if (www.result == UnityWebRequest.Result.Success)
40+
{
41+
return www.downloadHandler.text;
3242
}
3343
else
3444
{
3545
string message;
3646

3747
try
3848
{
39-
message = JsonUtility.FromJson<ErrorResponse>(body).message;
40-
} catch (Exception)
49+
message = JsonUtility.FromJson<ErrorResponse>(www.downloadHandler.text).message;
50+
}
51+
catch (Exception)
4152
{
42-
message = body;
53+
message = www.error;
4354
}
44-
throw new Exception($"Request failed, {(int)res.StatusCode} {res.StatusCode}: {message}");
55+
throw new Exception($"Request failed: {message}");
4556
}
4657
}
47-
catch (HttpRequestException err)
48-
{
49-
throw err;
50-
}
5158
}
5259
}
5360
}

Packages/com.trytalo.talo/Runtime/EventsAPI.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Collections.Generic;
22
using UnityEngine;
3-
using System.Net.Http;
43
using System;
5-
using System.Text;
64
using System.Linq;
75
using System.Threading.Tasks;
86

@@ -13,7 +11,7 @@ public class EventsAPI : BaseAPI
1311
private List<Event> queue = new List<Event>();
1412
private readonly int minQueueSize = 10;
1513

16-
public EventsAPI(TaloSettings settings, HttpClient client) : base(settings, client, "events") { }
14+
public EventsAPI(TaloManager manager) : base(manager, "events") { }
1715

1816
public void Track(string name)
1917
{
@@ -49,18 +47,14 @@ public async Task Flush()
4947
var eventsToSend = queue.ToArray();
5048
queue.Clear();
5149

52-
var req = new HttpRequestMessage();
53-
req.Method = HttpMethod.Post;
54-
req.RequestUri = new Uri(baseUrl);
55-
56-
string content = JsonUtility.ToJson(new EventsPostRequest(eventsToSend));
57-
req.Content = new StringContent(content, Encoding.UTF8, "application/json");
50+
var uri = new Uri(baseUrl);
51+
var content = JsonUtility.ToJson(new EventsPostRequest(eventsToSend));
5852

5953
try
6054
{
61-
await Call(req);
55+
await Call(uri, "POST", content);
6256
}
63-
catch (HttpRequestException err)
57+
catch (Exception err)
6458
{
6559
Debug.LogError(err.Message);
6660
queue.AddRange(eventsToSend);

Packages/com.trytalo.talo/Runtime/LeaderboardsAPI.cs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
using System;
2-
using System.Net.Http;
3-
using System.Text;
42
using System.Threading.Tasks;
53
using UnityEngine;
64

75
namespace TaloGameServices
86
{
97
public class LeaderboardsAPI : BaseAPI
108
{
11-
public LeaderboardsAPI(TaloSettings settings, HttpClient client) : base(settings, client, "leaderboards") { }
9+
public LeaderboardsAPI(TaloManager manager) : base(manager, "leaderboards") { }
1210

1311
public async Task<LeaderboardEntry[]> GetEntries(string internalName, int page)
1412
{
15-
var req = new HttpRequestMessage();
16-
req.Method = HttpMethod.Get;
17-
req.RequestUri = new Uri(baseUrl + $"/{internalName}/entries?page={page}");
13+
var uri = new Uri(baseUrl + $"/{internalName}/entries?page={page}");
1814

19-
string json = await Call(req);
15+
var json = await Call(uri, "GET");
2016
var res = JsonUtility.FromJson<LeaderboardEntriesResponse>(json);
2117
return res.entries;
2218
}
@@ -25,28 +21,24 @@ public async Task<LeaderboardEntry[]> GetEntriesForCurrentPlayer(string leaderbo
2521
{
2622
Talo.IdentityCheck();
2723

28-
var req = new HttpRequestMessage();
29-
req.Method = HttpMethod.Get;
30-
req.RequestUri = new Uri(baseUrl + $"/{leaderboardInternalName}/entries?page={page}&aliasId={Talo.CurrentAlias.id}");
24+
var uri = new Uri(baseUrl + $"/{leaderboardInternalName}/entries?page={page}&aliasId={Talo.CurrentAlias.id}");
3125

32-
string json = await Call(req);
26+
var json = await Call(uri, "GET");
3327
var res = JsonUtility.FromJson<LeaderboardEntriesResponse>(json);
28+
3429
return res.entries;
3530
}
3631

3732
public async Task<(LeaderboardEntry, bool)> AddEntry(string internalName, float score)
3833
{
3934
Talo.IdentityCheck();
4035

41-
var req = new HttpRequestMessage();
42-
req.Method = HttpMethod.Post;
43-
req.RequestUri = new Uri(baseUrl + $"/{internalName}/entries");
44-
45-
string content = JsonUtility.ToJson(new LeaderboardsPostRequest(score));
46-
req.Content = new StringContent(content, Encoding.UTF8, "application/json");
36+
var uri = new Uri(baseUrl + $"/{internalName}/entries");
37+
var content = JsonUtility.ToJson(new LeaderboardsPostRequest(score));
4738

48-
string json = await Call(req);
39+
var json = await Call(uri, "POST", content);
4940
var res = JsonUtility.FromJson<LeaderboardEntryResponse>(json);
41+
5042
return (res.entry, res.updated);
5143
}
5244
}

Packages/com.trytalo.talo/Runtime/PlayersAPI.cs

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,55 @@
11
using System;
2-
using System.Net.Http;
3-
using System.Text;
42
using System.Threading.Tasks;
53
using UnityEngine;
64

75
namespace TaloGameServices
86
{
97
public class PlayersAPI : BaseAPI
108
{
11-
public PlayersAPI(TaloSettings settings, HttpClient client) : base(settings, client, "players") { }
9+
public PlayersAPI(TaloManager manager) : base(manager, "players") { }
1210

1311
public async void Create(PlayerAlias alias)
1412
{
15-
var req = new HttpRequestMessage();
16-
req.Method = HttpMethod.Post;
17-
req.RequestUri = new Uri(baseUrl);
18-
req.Content = new StringContent(JsonUtility.ToJson(alias), Encoding.UTF8, "application/json");
13+
var uri = new Uri(baseUrl);
14+
var content = JsonUtility.ToJson(alias);
1915

20-
string json = await Call(req);
16+
var json = await Call(uri, "POST", content);
2117
var res = JsonUtility.FromJson<PlayersIdentifyResponse>(json);
2218

2319
Talo.CurrentAlias = res.alias;
2420
}
2521

2622
public async Task Identify(string service, string identifier)
2723
{
28-
var req = new HttpRequestMessage();
29-
req.Method = HttpMethod.Get;
30-
req.RequestUri = new Uri(baseUrl + $"/identify?service={service}&identifier={identifier}");
24+
var uri = new Uri(baseUrl + $"/identify?service={service}&identifier={identifier}");
3125

32-
string json = await Call(req);
26+
var json = await Call(uri, "GET");
3327
var res = JsonUtility.FromJson<PlayersIdentifyResponse>(json);
28+
3429
Talo.CurrentAlias = res.alias;
3530

3631
await Talo.Saves.GetSaves();
3732
}
3833

3934
public async void Update()
4035
{
41-
var req = new HttpRequestMessage();
42-
req.Method = new HttpMethod("PATCH");
43-
req.RequestUri = new Uri(baseUrl + $"/{Talo.CurrentPlayer.id}");
44-
45-
string content = JsonUtility.ToJson(Talo.CurrentPlayer);
46-
req.Content = new StringContent(content, Encoding.UTF8, "application/json");
36+
var uri = new Uri(baseUrl + $"/{Talo.CurrentPlayer.id}");
37+
var content = JsonUtility.ToJson(Talo.CurrentPlayer);
4738

48-
string json = await Call(req);
39+
var json = await Call(uri, "PATCH", content);
4940
var res = JsonUtility.FromJson<PlayersUpdateResponse>(json);
41+
5042
Talo.CurrentPlayer = res.player;
5143
}
5244

5345
public async Task<Player> Merge(string alias1, string alias2)
5446
{
55-
var req = new HttpRequestMessage();
56-
req.Method = new HttpMethod("POST");
57-
req.RequestUri = new Uri(baseUrl + "/merge");
58-
47+
var uri = new Uri(baseUrl + "/merge");
5948
string content = JsonUtility.ToJson(new PlayersMergeRequest(alias1, alias2));
60-
req.Content = new StringContent(content, Encoding.UTF8, "application/json");
6149

62-
string json = await Call(req);
50+
string json = await Call(uri, "POST", content);
6351
var res = JsonUtility.FromJson<PlayersUpdateResponse>(json);
52+
6453
return res.player;
6554
}
6655
}

0 commit comments

Comments
 (0)