refactor progress
This commit is contained in:
@@ -35,10 +35,12 @@
|
||||
speak_permission/0,
|
||||
stream_permission/0,
|
||||
use_vad_permission/0,
|
||||
read_message_history_permission/0,
|
||||
kick_members_permission/0,
|
||||
ban_members_permission/0
|
||||
]).
|
||||
|
||||
-spec gateway_opcode(integer()) -> atom().
|
||||
gateway_opcode(0) -> dispatch;
|
||||
gateway_opcode(1) -> heartbeat;
|
||||
gateway_opcode(2) -> identify;
|
||||
@@ -52,10 +54,10 @@ gateway_opcode(9) -> invalid_session;
|
||||
gateway_opcode(10) -> hello;
|
||||
gateway_opcode(11) -> heartbeat_ack;
|
||||
gateway_opcode(12) -> gateway_error;
|
||||
gateway_opcode(13) -> call_connect;
|
||||
gateway_opcode(14) -> lazy_request;
|
||||
gateway_opcode(_) -> unknown.
|
||||
|
||||
-spec opcode_to_num(atom()) -> integer().
|
||||
opcode_to_num(dispatch) -> 0;
|
||||
opcode_to_num(heartbeat) -> 1;
|
||||
opcode_to_num(identify) -> 2;
|
||||
@@ -69,9 +71,9 @@ opcode_to_num(invalid_session) -> 9;
|
||||
opcode_to_num(hello) -> 10;
|
||||
opcode_to_num(heartbeat_ack) -> 11;
|
||||
opcode_to_num(gateway_error) -> 12;
|
||||
opcode_to_num(call_connect) -> 13;
|
||||
opcode_to_num(lazy_request) -> 14.
|
||||
|
||||
-spec close_code_to_num(atom()) -> integer().
|
||||
close_code_to_num(unknown_error) -> 4000;
|
||||
close_code_to_num(unknown_opcode) -> 4001;
|
||||
close_code_to_num(decode_error) -> 4002;
|
||||
@@ -83,264 +85,16 @@ close_code_to_num(rate_limited) -> 4008;
|
||||
close_code_to_num(session_timeout) -> 4009;
|
||||
close_code_to_num(invalid_shard) -> 4010;
|
||||
close_code_to_num(sharding_required) -> 4011;
|
||||
close_code_to_num(invalid_api_version) -> 4012.
|
||||
close_code_to_num(invalid_api_version) -> 4012;
|
||||
close_code_to_num(ack_backpressure) -> 4013.
|
||||
|
||||
dispatch_event_atom(<<"READY">>) ->
|
||||
ready;
|
||||
dispatch_event_atom(<<"RESUMED">>) ->
|
||||
resumed;
|
||||
dispatch_event_atom(<<"SESSIONS_REPLACE">>) ->
|
||||
sessions_replace;
|
||||
dispatch_event_atom(<<"USER_UPDATE">>) ->
|
||||
user_update;
|
||||
dispatch_event_atom(<<"USER_SETTINGS_UPDATE">>) ->
|
||||
user_settings_update;
|
||||
dispatch_event_atom(<<"USER_GUILD_SETTINGS_UPDATE">>) ->
|
||||
user_guild_settings_update;
|
||||
dispatch_event_atom(<<"USER_PINNED_DMS_UPDATE">>) ->
|
||||
user_pinned_dms_update;
|
||||
dispatch_event_atom(<<"USER_NOTE_UPDATE">>) ->
|
||||
user_note_update;
|
||||
dispatch_event_atom(<<"RECENT_MENTION_DELETE">>) ->
|
||||
recent_mention_delete;
|
||||
dispatch_event_atom(<<"SAVED_MESSAGE_CREATE">>) ->
|
||||
saved_message_create;
|
||||
dispatch_event_atom(<<"SAVED_MESSAGE_DELETE">>) ->
|
||||
saved_message_delete;
|
||||
dispatch_event_atom(<<"AUTH_SESSION_CHANGE">>) ->
|
||||
auth_session_change;
|
||||
dispatch_event_atom(<<"PRESENCE_UPDATE">>) ->
|
||||
presence_update;
|
||||
dispatch_event_atom(<<"GUILD_CREATE">>) ->
|
||||
guild_create;
|
||||
dispatch_event_atom(<<"GUILD_UPDATE">>) ->
|
||||
guild_update;
|
||||
dispatch_event_atom(<<"GUILD_DELETE">>) ->
|
||||
guild_delete;
|
||||
dispatch_event_atom(<<"GUILD_MEMBER_ADD">>) ->
|
||||
guild_member_add;
|
||||
dispatch_event_atom(<<"GUILD_MEMBER_UPDATE">>) ->
|
||||
guild_member_update;
|
||||
dispatch_event_atom(<<"GUILD_MEMBER_REMOVE">>) ->
|
||||
guild_member_remove;
|
||||
dispatch_event_atom(<<"GUILD_ROLE_CREATE">>) ->
|
||||
guild_role_create;
|
||||
dispatch_event_atom(<<"GUILD_ROLE_UPDATE">>) ->
|
||||
guild_role_update;
|
||||
dispatch_event_atom(<<"GUILD_ROLE_UPDATE_BULK">>) ->
|
||||
guild_role_update_bulk;
|
||||
dispatch_event_atom(<<"GUILD_ROLE_DELETE">>) ->
|
||||
guild_role_delete;
|
||||
dispatch_event_atom(<<"GUILD_EMOJIS_UPDATE">>) ->
|
||||
guild_emojis_update;
|
||||
dispatch_event_atom(<<"GUILD_STICKERS_UPDATE">>) ->
|
||||
guild_stickers_update;
|
||||
dispatch_event_atom(<<"GUILD_BAN_ADD">>) ->
|
||||
guild_ban_add;
|
||||
dispatch_event_atom(<<"GUILD_BAN_REMOVE">>) ->
|
||||
guild_ban_remove;
|
||||
dispatch_event_atom(<<"GUILD_MEMBERS_CHUNK">>) ->
|
||||
guild_members_chunk;
|
||||
dispatch_event_atom(<<"CHANNEL_CREATE">>) ->
|
||||
channel_create;
|
||||
dispatch_event_atom(<<"CHANNEL_UPDATE">>) ->
|
||||
channel_update;
|
||||
dispatch_event_atom(<<"CHANNEL_UPDATE_BULK">>) ->
|
||||
channel_update_bulk;
|
||||
dispatch_event_atom(<<"PASSIVE_UPDATES">>) ->
|
||||
passive_updates;
|
||||
dispatch_event_atom(<<"CHANNEL_DELETE">>) ->
|
||||
channel_delete;
|
||||
dispatch_event_atom(<<"CHANNEL_RECIPIENT_ADD">>) ->
|
||||
channel_recipient_add;
|
||||
dispatch_event_atom(<<"CHANNEL_RECIPIENT_REMOVE">>) ->
|
||||
channel_recipient_remove;
|
||||
dispatch_event_atom(<<"CHANNEL_PINS_UPDATE">>) ->
|
||||
channel_pins_update;
|
||||
dispatch_event_atom(<<"CHANNEL_PINS_ACK">>) ->
|
||||
channel_pins_ack;
|
||||
dispatch_event_atom(<<"INVITE_CREATE">>) ->
|
||||
invite_create;
|
||||
dispatch_event_atom(<<"INVITE_DELETE">>) ->
|
||||
invite_delete;
|
||||
dispatch_event_atom(<<"MESSAGE_CREATE">>) ->
|
||||
message_create;
|
||||
dispatch_event_atom(<<"MESSAGE_UPDATE">>) ->
|
||||
message_update;
|
||||
dispatch_event_atom(<<"MESSAGE_DELETE">>) ->
|
||||
message_delete;
|
||||
dispatch_event_atom(<<"MESSAGE_DELETE_BULK">>) ->
|
||||
message_delete_bulk;
|
||||
dispatch_event_atom(<<"MESSAGE_REACTION_ADD">>) ->
|
||||
message_reaction_add;
|
||||
dispatch_event_atom(<<"MESSAGE_REACTION_REMOVE">>) ->
|
||||
message_reaction_remove;
|
||||
dispatch_event_atom(<<"MESSAGE_REACTION_REMOVE_ALL">>) ->
|
||||
message_reaction_remove_all;
|
||||
dispatch_event_atom(<<"MESSAGE_REACTION_REMOVE_EMOJI">>) ->
|
||||
message_reaction_remove_emoji;
|
||||
dispatch_event_atom(<<"MESSAGE_ACK">>) ->
|
||||
message_ack;
|
||||
dispatch_event_atom(<<"TYPING_START">>) ->
|
||||
typing_start;
|
||||
dispatch_event_atom(<<"WEBHOOKS_UPDATE">>) ->
|
||||
webhooks_update;
|
||||
dispatch_event_atom(<<"RELATIONSHIP_ADD">>) ->
|
||||
relationship_add;
|
||||
dispatch_event_atom(<<"RELATIONSHIP_UPDATE">>) ->
|
||||
relationship_update;
|
||||
dispatch_event_atom(<<"RELATIONSHIP_REMOVE">>) ->
|
||||
relationship_remove;
|
||||
dispatch_event_atom(<<"VOICE_STATE_UPDATE">>) ->
|
||||
voice_state_update;
|
||||
dispatch_event_atom(<<"VOICE_SERVER_UPDATE">>) ->
|
||||
voice_server_update;
|
||||
dispatch_event_atom(<<"FAVORITE_MEME_CREATE">>) ->
|
||||
favorite_meme_create;
|
||||
dispatch_event_atom(<<"FAVORITE_MEME_UPDATE">>) ->
|
||||
favorite_meme_update;
|
||||
dispatch_event_atom(<<"FAVORITE_MEME_DELETE">>) ->
|
||||
favorite_meme_delete;
|
||||
dispatch_event_atom(<<"CALL_CREATE">>) ->
|
||||
call_create;
|
||||
dispatch_event_atom(<<"CALL_UPDATE">>) ->
|
||||
call_update;
|
||||
dispatch_event_atom(<<"CALL_DELETE">>) ->
|
||||
call_delete;
|
||||
dispatch_event_atom(<<"GUILD_MEMBER_LIST_UPDATE">>) ->
|
||||
guild_member_list_update;
|
||||
dispatch_event_atom(<<"GUILD_SYNC">>) ->
|
||||
guild_sync;
|
||||
dispatch_event_atom(ready) ->
|
||||
<<"READY">>;
|
||||
dispatch_event_atom(resumed) ->
|
||||
<<"RESUMED">>;
|
||||
dispatch_event_atom(sessions_replace) ->
|
||||
<<"SESSIONS_REPLACE">>;
|
||||
dispatch_event_atom(user_update) ->
|
||||
<<"USER_UPDATE">>;
|
||||
dispatch_event_atom(user_settings_update) ->
|
||||
<<"USER_SETTINGS_UPDATE">>;
|
||||
dispatch_event_atom(user_guild_settings_update) ->
|
||||
<<"USER_GUILD_SETTINGS_UPDATE">>;
|
||||
dispatch_event_atom(user_pinned_dms_update) ->
|
||||
<<"USER_PINNED_DMS_UPDATE">>;
|
||||
dispatch_event_atom(user_note_update) ->
|
||||
<<"USER_NOTE_UPDATE">>;
|
||||
dispatch_event_atom(recent_mention_delete) ->
|
||||
<<"RECENT_MENTION_DELETE">>;
|
||||
dispatch_event_atom(saved_message_create) ->
|
||||
<<"SAVED_MESSAGE_CREATE">>;
|
||||
dispatch_event_atom(saved_message_delete) ->
|
||||
<<"SAVED_MESSAGE_DELETE">>;
|
||||
dispatch_event_atom(auth_session_change) ->
|
||||
<<"AUTH_SESSION_CHANGE">>;
|
||||
dispatch_event_atom(presence_update) ->
|
||||
<<"PRESENCE_UPDATE">>;
|
||||
dispatch_event_atom(guild_create) ->
|
||||
<<"GUILD_CREATE">>;
|
||||
dispatch_event_atom(guild_update) ->
|
||||
<<"GUILD_UPDATE">>;
|
||||
dispatch_event_atom(guild_delete) ->
|
||||
<<"GUILD_DELETE">>;
|
||||
dispatch_event_atom(guild_member_add) ->
|
||||
<<"GUILD_MEMBER_ADD">>;
|
||||
dispatch_event_atom(guild_member_update) ->
|
||||
<<"GUILD_MEMBER_UPDATE">>;
|
||||
dispatch_event_atom(guild_member_remove) ->
|
||||
<<"GUILD_MEMBER_REMOVE">>;
|
||||
dispatch_event_atom(guild_role_create) ->
|
||||
<<"GUILD_ROLE_CREATE">>;
|
||||
dispatch_event_atom(guild_role_update) ->
|
||||
<<"GUILD_ROLE_UPDATE">>;
|
||||
dispatch_event_atom(guild_role_update_bulk) ->
|
||||
<<"GUILD_ROLE_UPDATE_BULK">>;
|
||||
dispatch_event_atom(guild_role_delete) ->
|
||||
<<"GUILD_ROLE_DELETE">>;
|
||||
dispatch_event_atom(guild_emojis_update) ->
|
||||
<<"GUILD_EMOJIS_UPDATE">>;
|
||||
dispatch_event_atom(guild_stickers_update) ->
|
||||
<<"GUILD_STICKERS_UPDATE">>;
|
||||
dispatch_event_atom(guild_ban_add) ->
|
||||
<<"GUILD_BAN_ADD">>;
|
||||
dispatch_event_atom(guild_ban_remove) ->
|
||||
<<"GUILD_BAN_REMOVE">>;
|
||||
dispatch_event_atom(guild_members_chunk) ->
|
||||
<<"GUILD_MEMBERS_CHUNK">>;
|
||||
dispatch_event_atom(channel_create) ->
|
||||
<<"CHANNEL_CREATE">>;
|
||||
dispatch_event_atom(channel_update) ->
|
||||
<<"CHANNEL_UPDATE">>;
|
||||
dispatch_event_atom(channel_update_bulk) ->
|
||||
<<"CHANNEL_UPDATE_BULK">>;
|
||||
dispatch_event_atom(passive_updates) ->
|
||||
<<"PASSIVE_UPDATES">>;
|
||||
dispatch_event_atom(channel_delete) ->
|
||||
<<"CHANNEL_DELETE">>;
|
||||
dispatch_event_atom(channel_recipient_add) ->
|
||||
<<"CHANNEL_RECIPIENT_ADD">>;
|
||||
dispatch_event_atom(channel_recipient_remove) ->
|
||||
<<"CHANNEL_RECIPIENT_REMOVE">>;
|
||||
dispatch_event_atom(channel_pins_update) ->
|
||||
<<"CHANNEL_PINS_UPDATE">>;
|
||||
dispatch_event_atom(channel_pins_ack) ->
|
||||
<<"CHANNEL_PINS_ACK">>;
|
||||
dispatch_event_atom(invite_create) ->
|
||||
<<"INVITE_CREATE">>;
|
||||
dispatch_event_atom(invite_delete) ->
|
||||
<<"INVITE_DELETE">>;
|
||||
dispatch_event_atom(message_create) ->
|
||||
<<"MESSAGE_CREATE">>;
|
||||
dispatch_event_atom(message_update) ->
|
||||
<<"MESSAGE_UPDATE">>;
|
||||
dispatch_event_atom(message_delete) ->
|
||||
<<"MESSAGE_DELETE">>;
|
||||
dispatch_event_atom(message_delete_bulk) ->
|
||||
<<"MESSAGE_DELETE_BULK">>;
|
||||
dispatch_event_atom(message_reaction_add) ->
|
||||
<<"MESSAGE_REACTION_ADD">>;
|
||||
dispatch_event_atom(message_reaction_remove) ->
|
||||
<<"MESSAGE_REACTION_REMOVE">>;
|
||||
dispatch_event_atom(message_reaction_remove_all) ->
|
||||
<<"MESSAGE_REACTION_REMOVE_ALL">>;
|
||||
dispatch_event_atom(message_reaction_remove_emoji) ->
|
||||
<<"MESSAGE_REACTION_REMOVE_EMOJI">>;
|
||||
dispatch_event_atom(message_ack) ->
|
||||
<<"MESSAGE_ACK">>;
|
||||
dispatch_event_atom(typing_start) ->
|
||||
<<"TYPING_START">>;
|
||||
dispatch_event_atom(webhooks_update) ->
|
||||
<<"WEBHOOKS_UPDATE">>;
|
||||
dispatch_event_atom(relationship_add) ->
|
||||
<<"RELATIONSHIP_ADD">>;
|
||||
dispatch_event_atom(relationship_update) ->
|
||||
<<"RELATIONSHIP_UPDATE">>;
|
||||
dispatch_event_atom(relationship_remove) ->
|
||||
<<"RELATIONSHIP_REMOVE">>;
|
||||
dispatch_event_atom(voice_state_update) ->
|
||||
<<"VOICE_STATE_UPDATE">>;
|
||||
dispatch_event_atom(voice_server_update) ->
|
||||
<<"VOICE_SERVER_UPDATE">>;
|
||||
dispatch_event_atom(favorite_meme_create) ->
|
||||
<<"FAVORITE_MEME_CREATE">>;
|
||||
dispatch_event_atom(favorite_meme_update) ->
|
||||
<<"FAVORITE_MEME_UPDATE">>;
|
||||
dispatch_event_atom(favorite_meme_delete) ->
|
||||
<<"FAVORITE_MEME_DELETE">>;
|
||||
dispatch_event_atom(call_create) ->
|
||||
<<"CALL_CREATE">>;
|
||||
dispatch_event_atom(call_update) ->
|
||||
<<"CALL_UPDATE">>;
|
||||
dispatch_event_atom(call_delete) ->
|
||||
<<"CALL_DELETE">>;
|
||||
dispatch_event_atom(guild_member_list_update) ->
|
||||
<<"GUILD_MEMBER_LIST_UPDATE">>;
|
||||
dispatch_event_atom(guild_sync) ->
|
||||
<<"GUILD_SYNC">>;
|
||||
dispatch_event_atom(EventBinary) when is_binary(EventBinary) -> EventBinary;
|
||||
dispatch_event_atom(EventAtom) when is_atom(EventAtom) ->
|
||||
list_to_binary(string:uppercase(atom_to_list(EventAtom))).
|
||||
-spec dispatch_event_atom(atom() | binary()) -> atom() | binary().
|
||||
dispatch_event_atom(Event) when is_atom(Event) ->
|
||||
list_to_binary(string:uppercase(atom_to_list(Event)));
|
||||
dispatch_event_atom(EventBinary) when is_binary(EventBinary) ->
|
||||
event_atoms:normalize(EventBinary).
|
||||
|
||||
-spec status_type_atom(binary() | atom()) -> atom() | binary().
|
||||
status_type_atom(<<"online">>) -> online;
|
||||
status_type_atom(<<"dnd">>) -> dnd;
|
||||
status_type_atom(<<"idle">>) -> idle;
|
||||
@@ -352,17 +106,89 @@ status_type_atom(idle) -> <<"idle">>;
|
||||
status_type_atom(invisible) -> <<"invisible">>;
|
||||
status_type_atom(offline) -> <<"offline">>.
|
||||
|
||||
-spec max_payload_size() -> pos_integer().
|
||||
max_payload_size() -> 4096.
|
||||
|
||||
-spec heartbeat_interval() -> pos_integer().
|
||||
heartbeat_interval() -> 41250.
|
||||
|
||||
-spec heartbeat_timeout() -> pos_integer().
|
||||
heartbeat_timeout() -> 45000.
|
||||
|
||||
-spec random_session_bytes() -> pos_integer().
|
||||
random_session_bytes() -> 16.
|
||||
|
||||
-spec view_channel_permission() -> pos_integer().
|
||||
view_channel_permission() -> 1024.
|
||||
|
||||
-spec administrator_permission() -> pos_integer().
|
||||
administrator_permission() -> 8.
|
||||
|
||||
-spec manage_roles_permission() -> pos_integer().
|
||||
manage_roles_permission() -> 268435456.
|
||||
|
||||
-spec manage_channels_permission() -> pos_integer().
|
||||
manage_channels_permission() -> 16.
|
||||
|
||||
-spec connect_permission() -> pos_integer().
|
||||
connect_permission() -> 1048576.
|
||||
|
||||
-spec speak_permission() -> pos_integer().
|
||||
speak_permission() -> 2097152.
|
||||
|
||||
-spec stream_permission() -> pos_integer().
|
||||
stream_permission() -> 512.
|
||||
|
||||
-spec use_vad_permission() -> pos_integer().
|
||||
use_vad_permission() -> 33554432.
|
||||
|
||||
-spec read_message_history_permission() -> pos_integer().
|
||||
read_message_history_permission() -> 65536.
|
||||
|
||||
-spec kick_members_permission() -> pos_integer().
|
||||
kick_members_permission() -> 2.
|
||||
|
||||
-spec ban_members_permission() -> pos_integer().
|
||||
ban_members_permission() -> 4.
|
||||
|
||||
-ifdef(TEST).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
|
||||
gateway_opcode_test() ->
|
||||
?assertEqual(dispatch, gateway_opcode(0)),
|
||||
?assertEqual(heartbeat, gateway_opcode(1)),
|
||||
?assertEqual(identify, gateway_opcode(2)),
|
||||
?assertEqual(unknown, gateway_opcode(999)).
|
||||
|
||||
opcode_to_num_test() ->
|
||||
?assertEqual(0, opcode_to_num(dispatch)),
|
||||
?assertEqual(1, opcode_to_num(heartbeat)),
|
||||
?assertEqual(2, opcode_to_num(identify)).
|
||||
|
||||
close_code_to_num_test() ->
|
||||
?assertEqual(4000, close_code_to_num(unknown_error)),
|
||||
?assertEqual(4004, close_code_to_num(authentication_failed)),
|
||||
?assertEqual(4008, close_code_to_num(rate_limited)),
|
||||
?assertEqual(4013, close_code_to_num(ack_backpressure)).
|
||||
|
||||
status_type_atom_binary_to_atom_test() ->
|
||||
?assertEqual(online, status_type_atom(<<"online">>)),
|
||||
?assertEqual(dnd, status_type_atom(<<"dnd">>)),
|
||||
?assertEqual(idle, status_type_atom(<<"idle">>)),
|
||||
?assertEqual(invisible, status_type_atom(<<"invisible">>)),
|
||||
?assertEqual(offline, status_type_atom(<<"offline">>)).
|
||||
|
||||
status_type_atom_atom_to_binary_test() ->
|
||||
?assertEqual(<<"online">>, status_type_atom(online)),
|
||||
?assertEqual(<<"dnd">>, status_type_atom(dnd)),
|
||||
?assertEqual(<<"idle">>, status_type_atom(idle)).
|
||||
|
||||
constants_values_test() ->
|
||||
?assertEqual(4096, max_payload_size()),
|
||||
?assertEqual(41250, heartbeat_interval()),
|
||||
?assertEqual(45000, heartbeat_timeout()),
|
||||
?assertEqual(16, random_session_bytes()),
|
||||
?assertEqual(1024, view_channel_permission()),
|
||||
?assertEqual(8, administrator_permission()).
|
||||
|
||||
-endif.
|
||||
|
||||
Reference in New Issue
Block a user