aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-02-19 12:00:10 -0700
committerAdelyn Breelove <[email protected]>2019-02-19 12:00:10 -0700
commit34016fba55c1417408003c4689037bd8c7fc7881 (patch)
treef4c1a4542267f034f4296f52593f66c17216d1cc /lib
parentAdd unavailable guilds to cache test (diff)
downloaddisml-34016fba55c1417408003c4689037bd8c7fc7881.tar.xz
disml-34016fba55c1417408003c4689037bd8c7fc7881.zip
Add permissions module
Diffstat (limited to 'lib')
-rw-r--r--lib/dune3
-rw-r--r--lib/models/permissions.ml47
-rw-r--r--lib/models/permissions.mli34
3 files changed, 83 insertions, 1 deletions
diff --git a/lib/dune b/lib/dune
index fcc163c..0b13c69 100644
--- a/lib/dune
+++ b/lib/dune
@@ -12,6 +12,7 @@
guild guild_t guild_id guild_id_t
member member_t
message message_t message_id
+ permissions
presence
reaction reaction_t
role role_t role_id
@@ -20,7 +21,7 @@
event_models
cache client client_options disml dispatch endpoints event http opcode rl sharder
)
- (libraries checkseum.ocaml core async_ssl cohttp-async decompress logs yojson websocket-async ppx_deriving_yojson.runtime)
+ (libraries checkseum.ocaml core async_ssl cohttp-async decompress logs yojson websocket-async ppx_deriving_yojson.runtime bitmasks)
(preprocess (pps ppx_sexp_conv ppx_deriving_yojson))
)
diff --git a/lib/models/permissions.ml b/lib/models/permissions.ml
new file mode 100644
index 0000000..0026f49
--- /dev/null
+++ b/lib/models/permissions.ml
@@ -0,0 +1,47 @@
+type elt =
+| CREATE_INSTANT_INVITE
+| KICK_MEMBERS
+| BAN_MEMBERS
+| ADMINISTRATOR
+| MANAGE_CHANNELS
+| MANAGE_GUILD
+| ADD_REACTIONS
+| VIEW_AUDIT_LOG
+| PRIORITY_SPEAKER
+| READ_MESSAGES
+| SEND_MESSAGES
+| SEND_TTS_MESSAGES
+| MANAGE_MESSAGES
+| EMBED_LINKS
+| ATTACH_FILES
+| READ_MESSAGE_HISTORY
+| MENTION_EVERYONE
+| USE_EXTERNAL_EMOJIS
+| CONNECT
+| SPEAK
+| MUTE_MEMBERS
+| DEAFEN_MEMBERS
+| MOVE_MEMBERS
+| USE_VAD
+| CHANGE_NICKNAME
+| MANAGE_NICKNAMES
+| MANAGE_ROLES
+| MANAGE_WEBHOOKS
+| MANAGE_EMOJIS
+
+include BitMaskSet.Make(struct
+ include BitMaskSet.Int
+ type t = elt
+ let mask = 0b0111_1111_1111_1111_0111_1101_1111_1111
+end)
+
+let of_seq seq = List.of_seq seq |> of_list
+
+let to_seq mask = elements mask |> List.to_seq
+
+let to_seq_from (elt:elt) (_:storage) = Seq.return elt
+
+let add_seq seq init =
+ List.of_seq seq
+ |> of_list
+ |> (lor) init \ No newline at end of file
diff --git a/lib/models/permissions.mli b/lib/models/permissions.mli
new file mode 100644
index 0000000..74ed563
--- /dev/null
+++ b/lib/models/permissions.mli
@@ -0,0 +1,34 @@
+type elt =
+| CREATE_INSTANT_INVITE
+| KICK_MEMBERS
+| BAN_MEMBERS
+| ADMINISTRATOR
+| MANAGE_CHANNELS
+| MANAGE_GUILD
+| ADD_REACTIONS
+| VIEW_AUDIT_LOG
+| PRIORITY_SPEAKER
+| READ_MESSAGES
+| SEND_MESSAGES
+| SEND_TTS_MESSAGES
+| MANAGE_MESSAGES
+| EMBED_LINKS
+| ATTACH_FILES
+| READ_MESSAGE_HISTORY
+| MENTION_EVERYONE
+| USE_EXTERNAL_EMOJIS
+| CONNECT
+| SPEAK
+| MUTE_MEMBERS
+| DEAFEN_MEMBERS
+| MOVE_MEMBERS
+| USE_VAD
+| CHANGE_NICKNAME
+| MANAGE_NICKNAMES
+| MANAGE_ROLES
+| MANAGE_WEBHOOKS
+| MANAGE_EMOJIS
+
+include BitMaskSet.S with type elt := elt
+ with type storage = int
+ with type t = private int \ No newline at end of file