diff options
| author | Adelyn Breelove <[email protected]> | 2018-11-29 13:50:53 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2018-11-29 13:50:53 -0700 |
| commit | 18f4b7e8cada448f6fc15ee8ee18944dcb0b1676 (patch) | |
| tree | 1f0e626eeaf8dd89cc779655b68f12b1b8d0971a /lib | |
| parent | functors! (diff) | |
| download | disml-18f4b7e8cada448f6fc15ee8ee18944dcb0b1676.tar.xz disml-18f4b7e8cada448f6fc15ee8ee18944dcb0b1676.zip | |
Try to make it a more properly structured lib
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/http.ml | 1 | ||||
| -rw-r--r-- | lib/http.mli | 1 | ||||
| -rw-r--r-- | lib/s.ml | 61 | ||||
| -rw-r--r-- | lib/sharder.ml | 6 | ||||
| -rw-r--r-- | lib/sharder.mli | 1 |
5 files changed, 65 insertions, 5 deletions
diff --git a/lib/http.ml b/lib/http.ml index a8e6b22..8cc56fb 100644 --- a/lib/http.ml +++ b/lib/http.ml @@ -8,7 +8,6 @@ module Make(T : S.Token) = 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) diff --git a/lib/http.mli b/lib/http.mli new file mode 100644 index 0000000..caf2ad7 --- /dev/null +++ b/lib/http.mli @@ -0,0 +1 @@ +module Make(T: S.Token) : S.Http
\ No newline at end of file @@ -27,5 +27,64 @@ module type Http = sig end (* TODO add abstraction sigs *) - val token : string +end + +module type Sharder = sig + exception Invalid_Payload + exception Failure_to_Establish_Heartbeat + + type t + + val start : + ?count:int -> + string -> + t Deferred.t + + val set_status : + status:Yojson.Basic.json -> + t -> + (Shard.shard Shard.t) list Deferred.t + + val set_status_with : + f:(Shard.shard -> Yojson.Basic.json) -> + t -> + (Shard.shard Shard.t) list Deferred.t + + val request_guild_members : + ?query:string -> + ?count:string -> + guild:Snowflake.t -> + t -> + (Shard.shard Shard.t) list Deferred.t + + module Shard : sig + type shard + type 'a t + + val bind : + f:('a -> unit) -> + 'a t -> + unit + + val heartbeat : + shard -> + shard Deferred.t + + val set_status : + status:Yojson.Basic.json -> + shard -> + shard Deferred.t + + val request_guild_members : + ?query:string -> + ?limit:int -> + guild:Snowflake.t + + val create : + url:string -> + shards:int * int -> + token:string -> + unit -> + t Deferred.t + end end
\ No newline at end of file diff --git a/lib/sharder.ml b/lib/sharder.ml index 1fa97a0..0984050 100644 --- a/lib/sharder.ml +++ b/lib/sharder.ml @@ -104,7 +104,7 @@ module Make(H: S.Http) = struct let request_guild_members ~guild ?(query="") ?(limit=0) shard = let payload = `Assoc [ - ("guild_id", `String (string_of_int guild)); + ("guild_id", `String (Snowflake.to_string guild)); ("query", `String query); ("limit", `Int limit); ] in @@ -287,12 +287,12 @@ module Make(H: S.Http) = struct >>| fun shards -> { shards; } - let set_status sharder status = + let set_status ~status sharder = Deferred.all @@ List.map ~f:(fun t -> Shard.set_status ~status t.shard ) sharder.shards - let set_status_with sharder f = + let set_status_with ~f sharder = Deferred.all @@ List.map ~f:(fun t -> Shard.set_status ~status:(f t.shard) t.shard ) sharder.shards diff --git a/lib/sharder.mli b/lib/sharder.mli new file mode 100644 index 0000000..d872c8c --- /dev/null +++ b/lib/sharder.mli @@ -0,0 +1 @@ +module Make(H : S.Http) : S.Sharder
\ No newline at end of file |