blob: ba73fd9d97c6723e3c85d2e8d9be68cb6ddb2d58 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
open Lwt.Infix
open Cohttp
open Cohttp_lwt_unix
module Base = struct
exception Invalid_Method
let base_url = "https://discordapp.com/api/v7"
let cdn_url = "https://cdn.discordapp.com"
let process_url path =
Uri.of_string (base_url ^ path)
let process_request_body body =
body
|> Yojson.Basic.to_string
|> Cohttp_lwt.Body.of_string
let process_request_headers () =
let token = try
Sys.getenv "DISCORD_TOKEN"
with Not_found -> failwith "Please provide a token" in
let h = Header.init_with "User-Agent" "Animus v0.1.0" in
let h = Header.add h "Authorization" ("Bot " ^ token) in
Header.add h "Content-Type" "application/json"
(* TODO Finish processor *)
let process_response (resp, body) =
body |> Cohttp_lwt.Body.to_string >|= Yojson.Basic.from_string
let request ?(body=`Null) m path =
let uri = process_url path in
let headers = process_request_headers () in
let body = process_request_body body in
(match m with
| `DELETE -> Client.delete ~headers ~body uri
| `GET -> Client.get ~headers uri
| `PATCH -> Client.patch ~headers ~body uri
| `POST -> Client.post ~headers ~body uri
| `PUT -> Client.put ~headers ~body uri
| _ -> raise Invalid_Method)
>|= process_response
end
|