aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2018-11-29 13:50:53 -0700
committerAdelyn Breelove <[email protected]>2018-11-29 13:50:53 -0700
commit18f4b7e8cada448f6fc15ee8ee18944dcb0b1676 (patch)
tree1f0e626eeaf8dd89cc779655b68f12b1b8d0971a /lib
parentfunctors! (diff)
downloaddisml-18f4b7e8cada448f6fc15ee8ee18944dcb0b1676.tar.xz
disml-18f4b7e8cada448f6fc15ee8ee18944dcb0b1676.zip
Try to make it a more properly structured lib
Diffstat (limited to 'lib')
-rw-r--r--lib/http.ml1
-rw-r--r--lib/http.mli1
-rw-r--r--lib/s.ml61
-rw-r--r--lib/sharder.ml6
-rw-r--r--lib/sharder.mli1
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
diff --git a/lib/s.ml b/lib/s.ml
index 92259a0..454d2e7 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -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