diff options
Diffstat (limited to 'lib/models/channel.ml')
| -rw-r--r-- | lib/models/channel.ml | 116 |
1 files changed, 57 insertions, 59 deletions
diff --git a/lib/models/channel.ml b/lib/models/channel.ml index 3fab452..c3524ef 100644 --- a/lib/models/channel.ml +++ b/lib/models/channel.ml @@ -1,59 +1,57 @@ -module Make(Http : S.Http) = struct - open Async - open Core - include Channel_t - - exception Invalid_message - exception No_message_found - - let say ~content ch = - Http.create_message (get_id ch) (`Assoc [("content", `String content)]) - >>| Result.map ~f:Message_t.of_yojson_exn - - let send_message ?embed ?content ?file ?(tts=false) ch = - let embed = match embed with - | Some e -> e - | None -> `Null in - let content = match content with - | Some c -> `String c - | None -> `Null in - let file = match file with - | Some f -> `String f - | None -> `Null in - let () = match embed, content with - | `Null, `Null -> raise Invalid_message - | _ -> () in - Http.create_message (get_id ch) (`Assoc [ - ("embed", embed); - ("content", content); - ("file", file); - ("tts", `Bool tts); - ]) >>| Result.map ~f:Message_t.of_yojson_exn - - let delete ch = - Http.delete_channel (get_id ch) >>| Result.map ~f:ignore - - let get_message ~id ch = - Http.get_message (get_id ch) id >>| Result.map ~f:Message_t.of_yojson_exn - - let get_messages ?(mode=`Around) ?id ?(limit=50) ch = - let kind = match mode with - | `Around -> "around", limit - | `Before -> "before", limit - | `After -> "after", limit - in - let id = match id with - | Some id -> id - | None -> raise No_message_found in - Http.get_messages (get_id ch) id kind >>| Result.map ~f:(fun l -> - Yojson.Safe.Util.to_list l - |> List.map ~f:Message_t.of_yojson_exn) - - let broadcast_typing ch = - Http.broadcast_typing (get_id ch) >>| Result.map ~f:ignore - - let get_pins ch = - Http.get_pinned_messages (get_id ch) >>| Result.map ~f:(fun l -> - Yojson.Safe.Util.to_list l - |> List.map ~f:Message_t.of_yojson_exn) -end
\ No newline at end of file +open Async +open Core +include Channel_t + +exception Invalid_message +exception No_message_found + +let say ~content ch = + Http.create_message (get_id ch) (`Assoc [("content", `String content)]) + >>| Result.map ~f:Message_t.of_yojson_exn + +let send_message ?embed ?content ?file ?(tts=false) ch = + let embed = match embed with + | Some e -> e + | None -> `Null in + let content = match content with + | Some c -> `String c + | None -> `Null in + let file = match file with + | Some f -> `String f + | None -> `Null in + let () = match embed, content with + | `Null, `Null -> raise Invalid_message + | _ -> () in + Http.create_message (get_id ch) (`Assoc [ + ("embed", embed); + ("content", content); + ("file", file); + ("tts", `Bool tts); + ]) >>| Result.map ~f:Message_t.of_yojson_exn + +let delete ch = + Http.delete_channel (get_id ch) >>| Result.map ~f:ignore + +let get_message ~id ch = + Http.get_message (get_id ch) id >>| Result.map ~f:Message_t.of_yojson_exn + +let get_messages ?(mode=`Around) ?id ?(limit=50) ch = + let kind = match mode with + | `Around -> "around", limit + | `Before -> "before", limit + | `After -> "after", limit + in + let id = match id with + | Some id -> id + | None -> raise No_message_found in + Http.get_messages (get_id ch) id kind >>| Result.map ~f:(fun l -> + Yojson.Safe.Util.to_list l + |> List.map ~f:Message_t.of_yojson_exn) + +let broadcast_typing ch = + Http.broadcast_typing (get_id ch) >>| Result.map ~f:ignore + +let get_pins ch = + Http.get_pinned_messages (get_id ch) >>| Result.map ~f:(fun l -> + Yojson.Safe.Util.to_list l + |> List.map ~f:Message_t.of_yojson_exn)
\ No newline at end of file |