Skip to content

Commit f82b643

Browse files
committed
Intermediary commit
1 parent c69fb5b commit f82b643

File tree

5 files changed

+196
-4
lines changed

5 files changed

+196
-4
lines changed

lib/api/game/login.ml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
open Lwt.Syntax
2+
open Data.Platform.Credentials
3+
4+
let platform_login credentials game domain send =
5+
let url = Uri.make ~scheme:"https" ~host:domain ~path:"/game/login/platformlogin" () in
6+
let* json = send url in
7+
match json with
8+
| Some j ->
9+
let model = Models.Response.Game.Platform_login.from_json j in
10+
Lwt.return @@ Some model
11+
| None -> Lwt.return None
12+
;;

lib/api/game/platformlogin.ml

-4
This file was deleted.

lib/form.ml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
open Lwt.Syntax
2+
open Cohttp_lwt
3+
4+
let post (url : Uri.t) (form_data : (string * string) list) =
5+
let headers = Header.init_with "Content-Type" "application/x-www-form-urlencoded" in
6+
let body = Uri.encoded_of_query form_data in
7+
let* resp, body = Client.post ~headers ~body:(Body.of_string body) url in
8+
let status = Response.status resp in
9+
if Code.code_of_status status = 200
10+
then
11+
let* body = Body.to_string body in
12+
let json = Yojson.Basic.from_string body in
13+
Lwt.return (Some json)
14+
else (
15+
let url_str = Uri.to_string url in
16+
let* _ = Lwt_io.printl (Printf.sprintf "HTTP Error: %s for URL: %s" (Code.string_of_status status) url_str) in
17+
Lwt.return None)
18+
;;

lib/models/response/platform_login.ml

+165
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
type data_entry =
2+
{ id1 : string
3+
; id2 : string
4+
; url : string
5+
; icon : string
6+
; name : string
7+
; unknown1 : string
8+
; unknown2 : string
9+
; unknown3 : string
10+
; unknown4 : string
11+
; unknown5 : string option
12+
; unknown6 : string option
13+
; id3 : string
14+
; id4 : string
15+
; unknown7 : string list
16+
}
17+
18+
type config_entry =
19+
{ key : string
20+
; value : string
21+
}
22+
23+
type nested_entry =
24+
{ id1 : string
25+
; id2 : string
26+
; url : string
27+
; icon : string
28+
; name : string
29+
; clan : string
30+
; score1 : string
31+
; score2 : string
32+
; score3 : string
33+
; score4 : string
34+
; score5 : string option
35+
; id3 : string
36+
; id4 : string
37+
; unknown_list : string list
38+
}
39+
40+
type t =
41+
{ id1 : string
42+
; id2 : string
43+
; timestamp1 : string
44+
; timestamp2 : string
45+
; data_entries : data_entry list
46+
; unknown1 : string
47+
; unknown2 : string
48+
; unknown3 : string option
49+
; config : config_entry list
50+
; nested_entries : nested_entry list
51+
}
52+
53+
let from_json json =
54+
let open Yojson.Basic.Util in
55+
{ id1 = json |> member "id1" |> to_string
56+
; id2 = json |> member "id2" |> to_string
57+
; timestamp1 = json |> member "timestamp1" |> to_string
58+
; timestamp2 = json |> member "timestamp2" |> to_string
59+
; data_entries =
60+
json
61+
|> member "data_entries"
62+
|> to_list
63+
|> List.map (fun entry ->
64+
{ id1 = entry |> member "id1" |> to_string
65+
; id2 = entry |> member "id2" |> to_string
66+
; url = entry |> member "url" |> to_string
67+
; icon = entry |> member "icon" |> to_string
68+
; name = entry |> member "name" |> to_string
69+
; unknown1 = entry |> member "unknown1" |> to_string
70+
; unknown2 = entry |> member "unknown2" |> to_string
71+
; unknown3 = entry |> member "unknown3" |> to_string
72+
; unknown4 = entry |> member "unknown4" |> to_string
73+
; unknown5 = entry |> member "unknown5" |> to_option to_string
74+
; unknown6 = entry |> member "unknown6" |> to_option to_string
75+
; id3 = entry |> member "id3" |> to_string
76+
; id4 = entry |> member "id4" |> to_string
77+
; unknown7 = entry |> member "unknown7" |> to_list |> List.map to_string
78+
})
79+
; unknown1 = json |> member "unknown1" |> to_string
80+
; unknown2 = json |> member "unknown2" |> to_string
81+
; unknown3 = json |> member "unknown3" |> to_option to_string
82+
; config =
83+
json
84+
|> member "config"
85+
|> to_list
86+
|> List.map (fun entry ->
87+
{ key = entry |> member "key" |> to_string; value = entry |> member "value" |> to_string })
88+
; nested_entries =
89+
json
90+
|> member "nested_entries"
91+
|> to_list
92+
|> List.map (fun entry ->
93+
{ id1 = entry |> member "id1" |> to_string
94+
; id2 = entry |> member "id2" |> to_string
95+
; url = entry |> member "url" |> to_string
96+
; icon = entry |> member "icon" |> to_string
97+
; name = entry |> member "name" |> to_string
98+
; clan = entry |> member "clan" |> to_string
99+
; score1 = entry |> member "score1" |> to_string
100+
; score2 = entry |> member "score2" |> to_string
101+
; score3 = entry |> member "score3" |> to_string
102+
; score4 = entry |> member "score4" |> to_string
103+
; score5 = entry |> member "score5" |> to_option to_string
104+
; id3 = entry |> member "id3" |> to_string
105+
; id4 = entry |> member "id4" |> to_string
106+
; unknown_list = entry |> member "unknown_list" |> to_list |> List.map to_string
107+
})
108+
}
109+
;;
110+
111+
let to_json a =
112+
`Assoc
113+
[ "id1", `String a.id1
114+
; "id2", `String a.id2
115+
; "timestamp1", `String a.timestamp1
116+
; "timestamp2", `String a.timestamp2
117+
; ( "data_entries"
118+
, `List
119+
(List.map
120+
(fun entry ->
121+
`Assoc
122+
[ "id1", `String entry.id1
123+
; "id2", `String entry.id2
124+
; "url", `String entry.url
125+
; "icon", `String entry.icon
126+
; "name", `String entry.name
127+
; "unknown1", `String entry.unknown1
128+
; "unknown2", `String entry.unknown2
129+
; "unknown3", `String entry.unknown3
130+
; "unknown4", `String entry.unknown4
131+
; ("unknown5", match entry.unknown5 with Some v -> `String v | None -> `Null)
132+
; ("unknown6", match entry.unknown6 with Some v -> `String v | None -> `Null)
133+
; "id3", `String entry.id3
134+
; "id4", `String entry.id4
135+
; "unknown7", `List (List.map (fun i -> `String i) entry.unknown7)
136+
])
137+
a.data_entries) )
138+
; "unknown1", `String a.unknown1
139+
; "unknown2", `String a.unknown2
140+
; ("unknown3", match a.unknown3 with Some v -> `String v | None -> `Null)
141+
; ( "config"
142+
, `List (List.map (fun entry -> `Assoc [ "key", `String entry.key; "value", `String entry.value ]) a.config) )
143+
; ( "nested_entries"
144+
, `List
145+
(List.map
146+
(fun entry ->
147+
`Assoc
148+
[ "id1", `String entry.id1
149+
; "id2", `String entry.id2
150+
; "url", `String entry.url
151+
; "icon", `String entry.icon
152+
; "name", `String entry.name
153+
; "clan", `String entry.clan
154+
; "score1", `String entry.score1
155+
; "score2", `String entry.score2
156+
; "score3", `String entry.score3
157+
; "score4", `String entry.score4
158+
; ("score5", match entry.score5 with Some v -> `String v | None -> `Null)
159+
; "id3", `String entry.id3
160+
; "id4", `String entry.id4
161+
; "unknown_list", `List (List.map (fun i -> `String i) entry.unknown_list)
162+
])
163+
a.nested_entries) )
164+
]
165+
;;

shell.nix

+1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ pkgs.mkShell{
1818
shellHook = ''
1919
export C_INCLUDE_PATH=${pkgs.zlib.dev}/include:$C_INCLUDE_PATH
2020
export LIBRARY_PATH=${pkgs.zlib}/lib:$LIBRARY_PATH
21+
export OPAM_SWITCH_PREFIX=$HOME/.opam/5.2.0
2122
'';
2223
}

0 commit comments

Comments
 (0)