diff options
| author | Adelyn Breelove <[email protected]> | 2019-02-25 09:17:17 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-02-25 09:17:17 -0700 |
| commit | 54830153a07f466cd20b25f12847ba447be4ecc5 (patch) | |
| tree | c70fb3ef5ba67d5f5f820fddfba32e14fb2b368b | |
| parent | tidy add_seq (diff) | |
| download | disml-54830153a07f466cd20b25f12847ba447be4ecc5.tar.xz disml-54830153a07f466cd20b25f12847ba447be4ecc5.zip | |
Add permission overwrites
| -rw-r--r-- | lib/disml.ml | 6 | ||||
| -rw-r--r-- | lib/dune | 1 | ||||
| -rw-r--r-- | lib/models/channel/channel_t.ml | 16 | ||||
| -rw-r--r-- | lib/models/channel/channel_t.mli | 4 | ||||
| -rw-r--r-- | lib/models/overwrites.ml | 8 | ||||
| -rw-r--r-- | lib/models/overwrites.mli | 6 |
6 files changed, 34 insertions, 7 deletions
diff --git a/lib/disml.ml b/lib/disml.ml index d7a2874..c142af4 100644 --- a/lib/disml.ml +++ b/lib/disml.ml @@ -99,7 +99,11 @@ module Models = struct module Message_id = Message_id
(** Represents a permission integer as bitmask, allowing for constant set representation. *)
- module Permissions = Permissions
+ module Permissions = struct
+ include Permissions
+
+ module Overwrite = Overwrites
+ end
(** Represents a user presence. See {!Models.Event.PresenceUpdate}. *)
module Presence = Presence
@@ -12,6 +12,7 @@ guild guild_t guild_id guild_id_t
member member_t
message message_t message_id
+ overwrites
permissions
presence
reaction reaction_t
diff --git a/lib/models/channel/channel_t.ml b/lib/models/channel/channel_t.ml index 0734c63..e332c36 100644 --- a/lib/models/channel/channel_t.ml +++ b/lib/models/channel/channel_t.ml @@ -29,6 +29,7 @@ type guild_text = { topic: string option [@default None];
nsfw: bool;
slow_mode_timeout: int option [@default None];
+ permission_overwrites: Overwrites.t list [@default []];
} [@@deriving sexp, yojson { strict = false; exn = true }]
type guild_voice = {
@@ -39,6 +40,7 @@ type guild_voice = { position: int;
user_limit: int [@default -1];
bitrate: int option [@default None];
+ permission_overwrites: Overwrites.t list [@default []];
} [@@deriving sexp, yojson { strict = false; exn = true }]
type category = {
@@ -46,6 +48,7 @@ type category = { guild_id: Guild_id_t.t option [@default None];
position: int;
name: string;
+ permission_overwrites: Overwrites.t list [@default []];
} [@@deriving sexp, yojson { strict = false; exn = true }]
type t = [
@@ -74,19 +77,20 @@ type channel_wrapper = { application_id: Snowflake.t option [@default None];
category_id: Channel_id_t.t option [@default None][@key "parent_id"];
last_pin_timestamp: string option [@default None];
+ permission_overwrites: Overwrites.t list [@default []];
} [@@deriving sexp, yojson { strict = false; exn = true }]
-let unwrap_as_guild_text {id;guild_id;position;name;topic;nsfw;last_message_id;slow_mode_timeout;category_id;last_pin_timestamp;_} =
+let unwrap_as_guild_text {id;guild_id;position;name;topic;nsfw;last_message_id;slow_mode_timeout;category_id;last_pin_timestamp;permission_overwrites;_} =
let position = Option.value_exn position in
let name = Option.value_exn name in
let nsfw = Option.value ~default:false nsfw in
- { id; guild_id; position; name; topic; nsfw; last_message_id; slow_mode_timeout; category_id; last_pin_timestamp }
+ { id; guild_id; position; name; topic; nsfw; last_message_id; slow_mode_timeout; category_id; last_pin_timestamp; permission_overwrites }
-let unwrap_as_guild_voice {id;guild_id;position;name;bitrate;user_limit;category_id;_} =
+let unwrap_as_guild_voice {id;guild_id;position;name;bitrate;user_limit;category_id;permission_overwrites;_} =
let position = Option.value_exn position in
let name = Option.value_exn name in
let user_limit = Option.value ~default:(-1) user_limit in
- { id; guild_id; position; name; user_limit; bitrate ; category_id; }
+ { id; guild_id; position; name; user_limit; bitrate ; category_id; permission_overwrites }
let unwrap_as_dm {id;last_message_id;last_pin_timestamp;_} =
{ id; last_message_id; last_pin_timestamp; }
@@ -96,10 +100,10 @@ let unwrap_as_group {id;name;last_message_id;recipients;icon;owner_id;last_pin_t let owner_id = Option.value_exn owner_id in
{ id; name; last_message_id; recipients; icon; owner_id; last_pin_timestamp; }
-let unwrap_as_category {id;guild_id;position;name;_} =
+let unwrap_as_category {id;guild_id;position;name;permission_overwrites;_} =
let position = Option.value_exn position in
let name = Option.value_exn name in
- { id; guild_id; position; name; }
+ { id; guild_id; position; name; permission_overwrites }
let wrap s =
match s.kind with
diff --git a/lib/models/channel/channel_t.mli b/lib/models/channel/channel_t.mli index 4193c47..c6c6a0b 100644 --- a/lib/models/channel/channel_t.mli +++ b/lib/models/channel/channel_t.mli @@ -30,6 +30,7 @@ type guild_text = { topic: string option;
nsfw: bool;
slow_mode_timeout: int option;
+ permission_overwrites: Overwrites.t list;
} [@@deriving sexp, yojson { exn = true }]
(** Represents a voice channel in a guild. *)
@@ -41,6 +42,7 @@ type guild_voice = { position: int;
user_limit: int;
bitrate: int option;
+ permission_overwrites: Overwrites.t list;
} [@@deriving sexp, yojson { exn = true }]
(** Represents a guild category. *)
@@ -49,6 +51,7 @@ type category = { guild_id: Guild_id_t.t option;
position: int;
name: string;
+ permission_overwrites: Overwrites.t list;
} [@@deriving sexp, yojson { exn = true }]
(** Wrapper variant for all channel types. *)
@@ -79,6 +82,7 @@ type channel_wrapper = { application_id: Snowflake.t option;
category_id: Channel_id_t.t option;
last_pin_timestamp: string option;
+ permission_overwrites: Overwrites.t list;
} [@@deriving sexp, yojson { exn = true }]
val unwrap_as_guild_text : channel_wrapper -> guild_text
diff --git a/lib/models/overwrites.ml b/lib/models/overwrites.ml new file mode 100644 index 0000000..4603c91 --- /dev/null +++ b/lib/models/overwrites.ml @@ -0,0 +1,8 @@ +open Core + +type t = +{ id: Snowflake.t +; kind: string [@key "type"] +; allow: Permissions.t +; deny: Permissions.t +} [@@deriving sexp, yojson { strict = false; exn = true }]
\ No newline at end of file diff --git a/lib/models/overwrites.mli b/lib/models/overwrites.mli new file mode 100644 index 0000000..ed823dc --- /dev/null +++ b/lib/models/overwrites.mli @@ -0,0 +1,6 @@ +type t = +{ id: Snowflake.t +; kind: string +; allow: Permissions.t +; deny: Permissions.t +} [@@deriving sexp, yojson { exn = true }]
\ No newline at end of file |