Skip to content

Commit 77090c2

Browse files
committed
Merge branch 'master' of github.com:AoECenter/relic-sdk
2 parents dc468c5 + 6c878e6 commit 77090c2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+104
-98
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@
33
<img alt="relic" align="right" src="doc/relic.webp">
44

55
OCaml SDK for the relic-link API provided by [World's Edge Studio](https://www.ageofempires.com) for the Age of Empires franchise.
6+
7+
## Acknowledgements
8+
9+
A big thank you to Christopher Zimmermann for his zlib related c stubs and to the librematch team for their helpful research and advice.

lib/api/community/advertisement.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Represents all endpoints in [/community/advertisement/*]
44
- [GET /community/advertisement/findAdvertisements]
55
6-
"Advertisements" is the name for custom game lobby entries in the AoE franchise multiplayer system. *)
6+
"Advertisements" is the name for lobby entries in the ranked ladder, quick play and custom lobby browser. *)
77

88
(** [get s c g d s] retrieves a paginated list of currently open lobbies in the
99
game [g] on domain [d] in range [s] to [s] + [c]. The request is sent with

lib/api/community/clan.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ let find ?(name = "") ?(tags = []) ?(join_policies = []) ?(start = 1) ?(count =
88
[ "title", Data.Game.to_str game
99
; "name", name
1010
; "tags", Data.Query.encode_lst_s tags
11-
; "joinPolicies", Data.Query.encode_lst_i @@ List.map Models.Stub.Join_policy.to_int join_policies
11+
; "joinPolicies", Data.Query.encode_lst_i @@ List.map Models.Stub.Community.Join_policy.to_int join_policies
1212
; "start", string_of_int start
1313
; "count", string_of_int count
1414
]

lib/api/community/clan.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
val find
1010
: ?name:string
1111
-> ?tags:string list
12-
-> ?join_policies:Models.Stub.Join_policy.t list
12+
-> ?join_policies:Models.Stub.Community.Join_policy.t list
1313
-> ?start:int
1414
-> ?count:int
1515
-> Data.Game.t

lib/api/community/leaderboard.ml

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ let get_avatar ?(profile_ids = []) game domain send =
2828
;;
2929

3030
let get_leaderboard_2
31-
?(sortby = Models.Stub.Leaderboard_sorting.ByRating)
31+
?(sortby = Models.Stub.Community.Leaderboard_sorting.ByRating)
3232
?(platform = "PC_STEAM")
3333
?(leaderboard_id = 3)
3434
?(start = 1)
@@ -42,7 +42,7 @@ let get_leaderboard_2
4242
Uri.with_query'
4343
base_url
4444
[ "title", Data.Game.to_str game
45-
; "sortBy", string_of_int @@ Models.Stub.Leaderboard_sorting.to_int sortby
45+
; "sortBy", string_of_int @@ Models.Stub.Community.Leaderboard_sorting.to_int sortby
4646
; "platform", platform
4747
; "leaderboard_id", string_of_int leaderboard_id
4848
; "start", string_of_int start

lib/api/game/login.ml

-12
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; achievement_defs : Stub.Achievement.t list
2+
{ result : Stub.Community.Response.t
3+
; achievement_defs : Stub.Community.Achievement.t list
44
}
55

66
let to_json r =
77
`Assoc
8-
[ "result", Stub.Response.to_json r.result
9-
; "achievementDefs", `List (List.map Stub.Achievement.to_json r.achievement_defs)
8+
[ "result", Stub.Community.Response.to_json r.result
9+
; "achievementDefs", `List (List.map Stub.Community.Achievement.to_json r.achievement_defs)
1010
]
1111
;;
1212

1313
let from_json json =
1414
let open Yojson.Basic.Util in
15-
{ result = json |> member "result" |> Stub.Response.from_json
16-
; achievement_defs = json |> member "achievementDefs" |> to_list |> List.map Stub.Achievement.from_json
15+
{ result = json |> member "result" |> Stub.Community.Response.from_json
16+
; achievement_defs = json |> member "achievementDefs" |> to_list |> List.map Stub.Community.Achievement.from_json
1717
}
1818
;;

lib/models/response/community/achievement.mli

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
(** Raw reponse type, which corresponds to the model returned by the API endpoint *)
77
type t =
8-
{ result : Stub.Response.t (** Result header containing result code and message *)
9-
; achievement_defs : Stub.Achievement.t list (** List of achievement definitions *)
8+
{ result : Stub.Community.Response.t (** Result header containing result code and message *)
9+
; achievement_defs : Stub.Community.Achievement.t list (** List of achievement definitions *)
1010
}
1111

1212
(** [to_json r] converts an achivement defitnion response [r] into its JSON

lib/models/response/community/achievement_attainment.ml

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; user_achievements_map : (string * Stub.Achievement_attainment.t list) list
2+
{ result : Stub.Community.Response.t
3+
; user_achievements_map : (string * Stub.Community.Achievement_attainment.t list) list
44
}
55

66
let to_json r =
77
let user_achievement_map_json =
88
List.map
99
(fun (user_id, achievements) ->
10-
`Assoc [ user_id, `List (List.map Stub.Achievement_attainment.to_json achievements) ])
10+
`Assoc [ user_id, `List (List.map Stub.Community.Achievement_attainment.to_json achievements) ])
1111
r.user_achievements_map
1212
in
13-
`Assoc [ "result", Stub.Response.to_json r.result; "userAchievementsMap", `List user_achievement_map_json ]
13+
`Assoc
14+
[ "result", Stub.Community.Response.to_json r.result; "userAchievementsMap", `List user_achievement_map_json ]
1415
;;
1516

1617
let from_json json =
1718
let open Yojson.Basic.Util in
18-
let result = Yojson.Basic.Util.(json |> member "result" |> Stub.Response.from_json) in
19+
let result = Yojson.Basic.Util.(json |> member "result" |> Stub.Community.Response.from_json) in
1920
let user_achievements_map =
2021
json
2122
|> member "userAchievementsMap"
@@ -24,7 +25,7 @@ let from_json json =
2425
(fun acc user_achievement_json ->
2526
match user_achievement_json with
2627
| `Assoc [ (user_id, `List achievements) ] ->
27-
(user_id, List.map Stub.Achievement_attainment.from_json achievements) :: acc
28+
(user_id, List.map Stub.Community.Achievement_attainment.from_json achievements) :: acc
2829
| _ -> acc)
2930
[]
3031
in
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; matches : Stub.Advertisement.t list
4-
; avatars : Stub.Avatar.t list
2+
{ result : Stub.Community.Response.t
3+
; matches : Stub.Community.Advertisement.t list
4+
; avatars : Stub.Community.Avatar.t list
55
}
66

77
let to_json r =
88
`Assoc
9-
[ "result", Stub.Response.to_json r.result
10-
; "avatars", `List (List.map Stub.Avatar.to_json r.avatars)
11-
; "matches", `List (List.map Stub.Advertisement.to_json r.matches)
9+
[ "result", Stub.Community.Response.to_json r.result
10+
; "avatars", `List (List.map Stub.Community.Avatar.to_json r.avatars)
11+
; "matches", `List (List.map Stub.Community.Advertisement.to_json r.matches)
1212
]
1313
;;
1414

1515
let from_json json =
1616
let open Yojson.Basic.Util in
17-
{ result = json |> member "result" |> Stub.Response.from_json
18-
; matches = json |> member "matches" |> to_list |> List.map Stub.Advertisement.from_json
19-
; avatars = json |> member "avatars" |> to_list |> List.map Stub.Avatar.from_json
17+
{ result = json |> member "result" |> Stub.Community.Response.from_json
18+
; matches = json |> member "matches" |> to_list |> List.map Stub.Community.Advertisement.from_json
19+
; avatars = json |> member "avatars" |> to_list |> List.map Stub.Community.Avatar.from_json
2020
}
2121
;;
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; avatar_stats_for_profile : Stub.Avatar_stat.t list
2+
{ result : Stub.Community.Response.t
3+
; avatar_stats_for_profile : Stub.Community.Avatar_stat.t list
44
}
55

66
let to_json r =
77
`Assoc
8-
[ "result", Stub.Response.to_json r.result
9-
; "avatarStatsForProfile", `List (List.map Stub.Avatar_stat.to_json r.avatar_stats_for_profile)
8+
[ "result", Stub.Community.Response.to_json r.result
9+
; "avatarStatsForProfile", `List (List.map Stub.Community.Avatar_stat.to_json r.avatar_stats_for_profile)
1010
]
1111
;;
1212

1313
let from_json json =
1414
let open Yojson.Basic.Util in
15-
{ result = Yojson.Basic.Util.(json |> member "result" |> Stub.Response.from_json)
15+
{ result = Yojson.Basic.Util.(json |> member "result" |> Stub.Community.Response.from_json)
1616
; avatar_stats_for_profile =
17-
json |> member "avatarStatsForProfile" |> to_list |> List.map Stub.Avatar_stat.from_json
17+
json |> member "avatarStatsForProfile" |> to_list |> List.map Stub.Community.Avatar_stat.from_json
1818
}
1919
;;

lib/models/response/community/clan.ml

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; clans : Stub.Clan.t list
2+
{ result : Stub.Community.Response.t
3+
; clans : Stub.Community.Clan.t list
44
}
55

66
let to_json r =
7-
`Assoc [ "result", Stub.Response.to_json r.result; "clans", `List (List.map Stub.Clan.to_json r.clans) ]
7+
`Assoc
8+
[ "result", Stub.Community.Response.to_json r.result
9+
; "clans", `List (List.map Stub.Community.Clan.to_json r.clans)
10+
]
811
;;
912

1013
let from_json json =
1114
let open Yojson.Basic.Util in
12-
{ result = json |> member "result" |> Stub.Response.from_json
13-
; clans = json |> member "clans" |> to_list |> List.map Stub.Clan.from_json
15+
{ result = json |> member "result" |> Stub.Community.Response.from_json
16+
; clans = json |> member "clans" |> to_list |> List.map Stub.Community.Clan.from_json
1417
}
1518
;;
+7-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; clan : Stub.Clan_info.t
2+
{ result : Stub.Community.Response.t
3+
; clan : Stub.Community.Clan_info.t
44
}
55

6-
let to_json r = `Assoc [ "result", Stub.Response.to_json r.result; "clan", Stub.Clan_info.to_json r.clan ]
6+
let to_json r =
7+
`Assoc [ "result", Stub.Community.Response.to_json r.result; "clan", Stub.Community.Clan_info.to_json r.clan ]
8+
;;
79

810
let from_json json =
911
let open Yojson.Basic.Util in
10-
{ result = json |> member "result" |> Stub.Response.from_json
11-
; clan = json |> member "clan" |> Stub.Clan_info.from_json
12+
{ result = json |> member "result" |> Stub.Community.Response.from_json
13+
; clan = json |> member "clan" |> Stub.Community.Clan_info.from_json
1214
}
1315
;;
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; communityEvents : Stub.Community_event.t list
2+
{ result : Stub.Community.Response.t
3+
; communityEvents : Stub.Community.Community_event.t list
44
}
55

66
let to_json r =
77
`Assoc
8-
[ "result", Stub.Response.to_json r.result
9-
; "communityEvents", `List (List.map Stub.Community_event.to_json r.communityEvents)
8+
[ "result", Stub.Community.Response.to_json r.result
9+
; "communityEvents", `List (List.map Stub.Community.Community_event.to_json r.communityEvents)
1010
]
1111
;;
1212

1313
let from_json json =
1414
let open Yojson.Basic.Util in
15-
{ result = json |> member "result" |> Stub.Response.from_json
16-
; communityEvents = json |> member "communityEvents" |> to_list |> List.map Stub.Community_event.from_json
15+
{ result = json |> member "result" |> Stub.Community.Response.from_json
16+
; communityEvents =
17+
json |> member "communityEvents" |> to_list |> List.map Stub.Community.Community_event.from_json
1718
}
1819
;;
+7-6
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; item_instances_by_profile_id : (string * Stub.Inventory.t list) list
2+
{ result : Stub.Community.Response.t
3+
; item_instances_by_profile_id : (string * Stub.Community.Inventory.t list) list
44
}
55

66
let to_json r =
77
`Assoc
8-
[ "result", Stub.Response.to_json r.result
8+
[ "result", Stub.Community.Response.to_json r.result
99
; ( "itemInstancesByProfileID"
1010
, `List
1111
(List.map
12-
(fun (profile_id, items) -> `Assoc [ profile_id, `List (List.map Stub.Inventory.to_json items) ])
12+
(fun (profile_id, items) ->
13+
`Assoc [ profile_id, `List (List.map Stub.Community.Inventory.to_json items) ])
1314
r.item_instances_by_profile_id) )
1415
]
1516
;;
1617

1718
let from_json json =
1819
let open Yojson.Basic.Util in
19-
{ result = json |> member "result" |> Stub.Response.from_json
20+
{ result = json |> member "result" |> Stub.Community.Response.from_json
2021
; item_instances_by_profile_id =
2122
json
2223
|> member "itemInstancesByProfileID"
2324
|> to_list
2425
|> List.map (fun json ->
2526
match json with
26-
| `Assoc [ (profile_id, `List items) ] -> profile_id, List.map Stub.Inventory.from_json items
27+
| `Assoc [ (profile_id, `List items) ] -> profile_id, List.map Stub.Community.Inventory.from_json items
2728
| _ -> failwith "JSON structure mismatch")
2829
}
2930
;;
+16-15
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; leaderboards : Stub.Leaderboard.t list
4-
; match_types : Stub.Match_type.t list
5-
; races : Stub.Race.t list
6-
; leaderboard_regions : Stub.Leaderboard_region.t list
2+
{ result : Stub.Community.Response.t
3+
; leaderboards : Stub.Community.Leaderboard.t list
4+
; match_types : Stub.Community.Match_type.t list
5+
; races : Stub.Community.Race.t list
6+
; leaderboard_regions : Stub.Community.Leaderboard_region.t list
77
(*; factions : string list (* Theres no docs for this so i have to disable it for now. It's been empty for every
88
game. *) *)
99
}
1010

1111
let to_json r =
1212
`Assoc
13-
[ "result", Stub.Response.to_json r.result
14-
; "leaderboards", `List (List.map Stub.Leaderboard.to_json r.leaderboards)
15-
; "matchTypes", `List (List.map Stub.Match_type.to_json r.match_types)
16-
; "races", `List (List.map Stub.Race.to_json r.races)
17-
; "leaderboardRegions", `List (List.map Stub.Leaderboard_region.to_json r.leaderboard_regions)
13+
[ "result", Stub.Community.Response.to_json r.result
14+
; "leaderboards", `List (List.map Stub.Community.Leaderboard.to_json r.leaderboards)
15+
; "matchTypes", `List (List.map Stub.Community.Match_type.to_json r.match_types)
16+
; "races", `List (List.map Stub.Community.Race.to_json r.races)
17+
; "leaderboardRegions", `List (List.map Stub.Community.Leaderboard_region.to_json r.leaderboard_regions)
1818
]
1919
;;
2020

2121
let from_json json =
22-
{ result = Yojson.Basic.Util.(json |> member "result" |> Stub.Response.from_json)
22+
{ result = Yojson.Basic.Util.(json |> member "result" |> Stub.Community.Response.from_json)
2323
; leaderboards =
24-
Yojson.Basic.Util.(json |> member "leaderboards" |> to_list |> List.map Stub.Leaderboard.from_json)
25-
; match_types = Yojson.Basic.Util.(json |> member "matchTypes" |> to_list |> List.map Stub.Match_type.from_json)
26-
; races = Yojson.Basic.Util.(json |> member "races" |> to_list |> List.map Stub.Race.from_json)
24+
Yojson.Basic.Util.(json |> member "leaderboards" |> to_list |> List.map Stub.Community.Leaderboard.from_json)
25+
; match_types =
26+
Yojson.Basic.Util.(json |> member "matchTypes" |> to_list |> List.map Stub.Community.Match_type.from_json)
27+
; races = Yojson.Basic.Util.(json |> member "races" |> to_list |> List.map Stub.Community.Race.from_json)
2728
; leaderboard_regions =
2829
Yojson.Basic.Util.(
29-
json |> member "leaderboardRegions" |> to_list |> List.map Stub.Leaderboard_region.from_json)
30+
json |> member "leaderboardRegions" |> to_list |> List.map Stub.Community.Leaderboard_region.from_json)
3031
}
3132
;;
+10-9
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
type t =
2-
{ result : Stub.Response.t
3-
; stat_groups : Stub.Stat_group.t list
4-
; leaderboard_stats : Stub.Leaderboard_stat.t list
2+
{ result : Stub.Community.Response.t
3+
; stat_groups : Stub.Community.Stat_group.t list
4+
; leaderboard_stats : Stub.Community.Leaderboard_stat.t list
55
; rank_total : int
66
}
77

88
let to_json l =
99
`Assoc
10-
[ "result", Stub.Response.to_json l.result
11-
; "statGroups", `List (List.map Stub.Stat_group.to_json l.stat_groups)
12-
; "leaderboardStats", `List (List.map Stub.Leaderboard_stat.to_json l.leaderboard_stats)
10+
[ "result", Stub.Community.Response.to_json l.result
11+
; "statGroups", `List (List.map Stub.Community.Stat_group.to_json l.stat_groups)
12+
; "leaderboardStats", `List (List.map Stub.Community.Leaderboard_stat.to_json l.leaderboard_stats)
1313
; "rankTotal", `Int l.rank_total
1414
]
1515
;;
1616

1717
let from_json json =
1818
let open Yojson.Basic.Util in
19-
{ result = json |> member "result" |> Stub.Response.from_json
20-
; stat_groups = json |> member "statGroups" |> to_list |> List.map Stub.Stat_group.from_json
21-
; leaderboard_stats = json |> member "leaderboardStats" |> to_list |> List.map Stub.Leaderboard_stat.from_json
19+
{ result = json |> member "result" |> Stub.Community.Response.from_json
20+
; stat_groups = json |> member "statGroups" |> to_list |> List.map Stub.Community.Stat_group.from_json
21+
; leaderboard_stats =
22+
json |> member "leaderboardStats" |> to_list |> List.map Stub.Community.Leaderboard_stat.from_json
2223
; rank_total = json |> member "rankTotal" |> to_int
2324
}
2425
;;

0 commit comments

Comments
 (0)