aboutsummaryrefslogtreecommitdiff
path: root/lib/gateway
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-02-13 12:21:19 -0700
committerAdelyn Breelove <[email protected]>2019-02-13 12:21:19 -0700
commitf241545b6e9a46fc0482ab66db4d9bbdf44cae4f (patch)
tree6f68fc345b566154aa1d7393472ea1b6ad0f38d6 /lib/gateway
parentUpdate test bot (diff)
downloaddisml-f241545b6e9a46fc0482ab66db4d9bbdf44cae4f.tar.xz
disml-f241545b6e9a46fc0482ab66db4d9bbdf44cae4f.zip
Change api of the set_status methods
Diffstat (limited to 'lib/gateway')
-rw-r--r--lib/gateway/sharder.ml54
-rw-r--r--lib/gateway/sharder.mli16
2 files changed, 27 insertions, 43 deletions
diff --git a/lib/gateway/sharder.ml b/lib/gateway/sharder.ml
index 9fcb10d..4317f80 100644
--- a/lib/gateway/sharder.ml
+++ b/lib/gateway/sharder.ml
@@ -107,40 +107,29 @@ module Shard = struct
; session = session
}
- let set_status ~(status:Yojson.Safe.t) shard =
- let payload = match status with
- | `Assoc ["name", `String name; "type", `Int t]
- | `Assoc ["type", `Int t; "name", `String name] ->
- `Assoc [
- "status", `String "online";
- "afk", `Bool false;
- "since", `Null;
- "game", `Assoc [
- "name", `String name;
- "type", `Int t;
- ]
- ]
- | `String name ->
- `Assoc [
- "status", `String "online";
- "afk", `Bool false;
- "since", `Null;
- "game", `Assoc [
- "name", `String name;
- "type", `Int 0
- ]
+ let set_status ?(status="online") ?(kind=1) ?name ?since shard =
+ let since = Option.(since >>| (fun v -> `Int v) |> value ~default:`Null) in
+ let game = match name with
+ | Some name -> `Assoc [ "name", `String name; "type", `Int kind ]
+ | None -> `Null
+ in
+ let payload = `Assoc
+ [ "status", `String status
+ ; "afk", `Bool false
+ ; "since", since
+ ; "game", game
]
- | _ -> raise Invalid_Payload
in
Ivar.read shard.ready >>= fun _ ->
push_frame ~payload ~ev:STATUS_UPDATE shard
let request_guild_members ?(query="") ?(limit=0) ~guild shard =
- let payload = `Assoc [
- "guild_id", `String (Int.to_string guild);
- "query", `String query;
- "limit", `Int limit;
- ] in
+ let payload = `Assoc
+ [ "guild_id", `String (Int.to_string guild)
+ ; "query", `String query
+ ; "limit", `Int limit
+ ]
+ in
Ivar.read shard.ready >>= fun _ ->
push_frame ~payload ~ev:REQUEST_GUILD_MEMBERS shard
@@ -372,14 +361,9 @@ let start ?count ?compress ?large_threshold () =
>>| fun shards ->
{ shards }
-let set_status ~status sharder =
- Deferred.all @@ List.map ~f:(fun t ->
- Shard.set_status ~status t.state
- ) sharder.shards
-
-let set_status_with ~f sharder =
+let set_status ?status ?kind ?name ?since sharder =
Deferred.all @@ List.map ~f:(fun t ->
- Shard.set_status ~status:(f t.state) t.state
+ Shard.set_status ?status ?kind ?name ?since t.state
) sharder.shards
let request_guild_members ?query ?limit ~guild sharder =
diff --git a/lib/gateway/sharder.mli b/lib/gateway/sharder.mli
index a5f18e6..1851265 100644
--- a/lib/gateway/sharder.mli
+++ b/lib/gateway/sharder.mli
@@ -48,7 +48,10 @@ module Shard : sig
(** Set the status of the shard. *)
val set_status :
- status:Yojson.Safe.t ->
+ ?status:string ->
+ ?kind:int ->
+ ?name:string ->
+ ?since:int ->
shard ->
shard Deferred.t
@@ -78,13 +81,10 @@ end
(** Calls {!Shard.set_status} for each shard registered with the sharder. *)
val set_status :
- status:Yojson.Safe.t ->
- t ->
- Shard.shard list Deferred.t
-
-(** Like {!set_status} but takes a function with a {{!Shard.shard}shard} as its parameter and {{!Yojson.Safe.t}json} for its return. *)
-val set_status_with :
- f:(Shard.shard -> Yojson.Safe.t) ->
+ ?status:string ->
+ ?kind:int ->
+ ?name:string ->
+ ?since:int ->
t ->
Shard.shard list Deferred.t