Skip to content

Commit b1a888e

Browse files
committed
Huge modifications!
1 parent 891ced2 commit b1a888e

File tree

3 files changed

+47
-57
lines changed

3 files changed

+47
-57
lines changed

haxelib.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"fnf"
1010
],
1111
"description": "An useful tool to work with GameJolt for FNF Mods and Haxe Games as well!",
12-
"version": "6.0.0",
12+
"version": "6.1.0",
1313
"classPath": "src/",
1414
"releasenote": "Brand New Organization to Everything!",
1515
"contributors": [

src/gamejolt/GameJolt.hx

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class GJRequest {
5353
/**
5454
* The last response generated by `send()` spawns here.
5555
*/
56-
public var lastResponse(default, null):Response = {};
56+
public var lastResponse(default, null):Response = {success: false, message: "No response has been received yet"};
5757

5858
/**
5959
* The current instruction `this` is willing to execute. Cannot be modified while `executing == true`.
@@ -84,7 +84,7 @@ class GJRequest {
8484
call = Call;
8585

8686
function get_url():String
87-
return 'https://api.gamejolt.com/api/game/v1_2${parseType(call)}';
87+
return sign('https://api.gamejolt.com/api/game/v1_2${parseType(call)}');
8888

8989
function set_call(value:RequestType):RequestType {
9090
if (executing)
@@ -101,45 +101,36 @@ class GJRequest {
101101
return;
102102
executing = true;
103103

104-
sys.thread.Thread.create(function() {
105-
var loader = new openfl.net.URLLoader();
106-
loader.addEventListener(Event.COMPLETE, function(complete) {
107-
var response:Response = lastResponse = formatImages(cast haxe.Json.parse(loader.data).response);
108-
if (response.message != null) {
109-
var err:String = 'Response Error: ${response.message}';
110-
if (response.responses != null) {
111-
var index:Int = response.responses.findIndex(r -> r.message != null);
112-
if (index >= 0)
113-
err += ' (Request #$index: ${response.responses[index].message})';
114-
}
115-
onError(err);
116-
} else
117-
onComplete(response);
118-
119-
executing = false;
120-
});
121-
loader.addEventListener(ProgressEvent.PROGRESS, progress -> onProgress(progress.bytesLoaded, progress.bytesTotal));
122-
loader.addEventListener(IOErrorEvent.IO_ERROR, function(ioError) {
123-
lastResponse = {message: 'IO Error: ${ioError.text}'}
124-
onError(lastResponse.message);
125-
executing = false;
126-
});
127-
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError -> {
128-
lastResponse = {message: 'Security Error: ${securityError.text}'}
129-
onError(lastResponse.message);
130-
executing = false;
131-
});
132-
loader.load(new openfl.net.URLRequest(url));
104+
var loader = new openfl.net.URLLoader();
105+
loader.addEventListener(Event.COMPLETE, function(complete) {
106+
trace("Success!");
107+
lastResponse = formatImages(cast haxe.Json.parse(loader.data).response);
108+
if (lastResponse.message != null)
109+
onError('Response Error: ${lastResponse.message}');
110+
else
111+
onComplete(lastResponse);
112+
executing = false;
113+
});
114+
loader.addEventListener(ProgressEvent.PROGRESS, progress -> onProgress(progress.bytesLoaded, progress.bytesTotal));
115+
loader.addEventListener(IOErrorEvent.IO_ERROR, function(ioError) {
116+
lastResponse = {success: false, message: 'IO Error: ${ioError.text}'}
117+
onError(lastResponse.message);
118+
executing = false;
119+
});
120+
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError -> {
121+
lastResponse = {success: false, message: 'Security Error: ${securityError.text}'}
122+
onError(lastResponse.message);
123+
executing = false;
133124
});
125+
loader.load(new openfl.net.URLRequest(url));
134126
}
135127

136128
/**
137129
* Makes retrieved images to have a better resolution.
138130
* @param oldRes The `Response` to be modified.
139131
* @return A new `Response` with every Image URL modified for a better resolution when requested.
140132
*/
141-
function formatImages(oldRes:Response):Response {
142-
var res:Response = oldRes;
133+
function formatImages(res:Response):Response {
143134
if (res.users != null)
144135
res.users.iter(u -> u.avatar_url = '${u.avatar_url.substring(0, 32)}1000${u.avatar_url.substr(34)}'.replace(".jpg", ".png")
145136
.replace(".webp", ".png"));
@@ -346,7 +337,7 @@ class GJRequest {
346337

347338
var urlSection:String = '/$command${action != "" ? '/$action' : ""}?game_id=${GameJolt.gameID}${[for (p in params) '&${p.name}=${p.value}'].join("")}';
348339
if (signed)
349-
urlSection = sign(urlSection);
340+
urlSection = sign(urlSection).urlEncode();
350341
return urlSection;
351342
}
352343

@@ -357,6 +348,6 @@ class GJRequest {
357348
*/
358349
function sign(daUrl:String):String {
359350
var urlToEncode:String = daUrl + GameJolt.gameKey;
360-
return '$daUrl&signature=${GameJolt.usingMd5 ? haxe.crypto.Md5.encode(urlToEncode) : haxe.crypto.Sha1.encode(urlToEncode)}'.urlEncode();
351+
return '$daUrl&signature=${GameJolt.usingMd5 ? haxe.crypto.Md5.encode(urlToEncode) : haxe.crypto.Sha1.encode(urlToEncode)}';
361352
}
362353
}

src/gamejolt/formats/Response.hx

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,32 @@ package gamejolt.formats;
33
/**
44
* This is how GameJolt API responses are formatted like.
55
*/
6-
@:structInit
7-
class Response {
6+
typedef Response = {
87
// General
9-
public var success:Bool = false;
10-
@:optional public var message:String = "No successful response has been received yet";
8+
success:Bool,
9+
?message:String,
1110
// User Fetching
12-
@:optional public var users:Array<User>;
11+
?users:Array<User>,
1312
// Trophies Fetching
14-
@:optional public var trophies:Array<Trophy>;
13+
?trophies:Array<Trophy>,
1514
// Scores Fetching
16-
@:optional public var scores:Array<Score>;
17-
@:optional public var tables:Array<ScoreTable>;
18-
@:optional public var rank:Int;
15+
?scores:Array<Score>,
16+
?tables:Array<ScoreTable>,
17+
?rank:Int,
1918
// Friends Fetching
20-
@:optional public var friends:Array<{friend_id:Int}>;
19+
?friends:Array<{friend_id:Int}>,
2120
// Data Store Fetching
22-
@:optional public var keys:Array<{key:String}>;
23-
@:optional public var data:String;
21+
?keys:Array<{key:String}>,
22+
?data:String,
2423
// Time Fetching
25-
@:optional public var timestamp:Int;
26-
@:optional public var timezone:String;
27-
@:optional public var year:Int;
28-
@:optional public var month:Int;
29-
@:optional public var day:Int;
30-
@:optional public var hour:Int;
31-
@:optional public var minute:Int;
32-
@:optional public var second:Int;
24+
?timestamp:Int,
25+
?timezone:String,
26+
?year:Int,
27+
?month:Int,
28+
?day:Int,
29+
?hour:Int,
30+
?minute:Int,
31+
?second:Int,
3332
// Batch Reception
34-
@:optional public var responses:Array<Response>;
33+
?responses:Array<Response>
3534
}

0 commit comments

Comments
 (0)