Commit Graph

123 Commits

Author SHA1 Message Date
Luna Mendes 26931425c4 gateway.websocket: fix resuming woes 2018-09-22 19:01:42 -03:00
Luna Mendes bfa0e61a0c gateway.websocket: give random heartbeat_interval 2018-09-12 21:27:19 -03:00
Luna Mendes 25cd85d704 gateway.websocket: rudimentary resuming 2018-09-12 20:53:29 -03:00
Luna Mendes 213eb328b2 gateway.websocket: add implementation for _handle_3
- gateway.websocket: add dummy implementation for _handle_5
2018-09-12 20:35:50 -03:00
Luna Mendes dd4ae44080 gateway.websocket: rudimentary lazy guilds
implementation details are on the docstrings for _handle_14.

 - presence: merge member dict instead of copying some fields from it
2018-09-10 22:32:58 -03:00
Luna Mendes 952b66a28c blueprints.{channels, guilds}: use *Type as enums instead of classes 2018-09-10 20:29:04 -03:00
Luna Mendes ee8cfedf69 schema: change raise_err default to True 2018-09-10 20:25:03 -03:00
Luna Mendes cd5dbc4886 Rough presence management
Lots of changes to get it working.

One day changes will be able to be small enough to be split across
commits.

 - enums: use enum.Enum, make EasyEnum subclass
 - enums: add ActivityType, ActivityFlags, StatusType
 - gateway.state: use 128 random bits instead of 256
 - gateway.state: add MAX_STORE_SIZE in PayloadStore and check it when
    adding a new payload
 - gateway.websocket: add GatewayWebsocket.update_status
 - presence: add PresenceManager.dispatch_guild_pres and
    PresenceManager.dispatch_pres
 - schema: add snowflake, activity_type, status_external types
 - schema: add GW_ACTIVITY, GW_STATUS_UPDATE
 - storage: fix _channels_extra and fixes for ChannelType as enum instead of
    class
2018-09-10 01:09:09 -03:00
Luna Mendes d39783e666 Add barebones implementation for GUILD_SYNC
- state_manager: add StateManager.guild_states
 - add PresenceManager in the presence module
 - fix get_user_guilds not returning ints
 - gateway: add dummy handler for op 4
 - gateway: add hazmat implementation for op 14
 - run: keep websockets logger on INFO
 - run: add more headers on app_after_request
2018-09-01 23:53:36 -03:00
slice ee6ad56604
Revert "refactor out _dummy function"
This reverts commit 24a19c8736.
2018-09-01 19:23:13 -07:00
slice 24a19c8736
refactor out _dummy function 2018-09-01 19:06:49 -07:00
slice 13f6842232
remove unnecessary ** in dict 2018-09-01 19:02:42 -07:00
slice f463d6c934
rewrite readme 2018-09-01 18:54:28 -07:00
Luna Mendes 4a658aec95 README: change from pipenv shell to pipenv run
Do we really need the shell as an extra step?
2018-08-21 05:17:24 -03:00
Luna Mendes 85d4f9e593 run: Add some headers for Access-Control-Allow-Headers 2018-08-21 05:13:38 -03:00
Luna Mendes b323368ffc config: s/WEBSERVER_URL/WEBSOCKET_URL
Also add explanation on how to use WEBSOCKET_URL
2018-07-21 17:19:57 -03:00
Luna Mendes 5e4230bc31 Revert "use ws settings for gateway endpoint"
This reverts commit cb70842280.

WEBSERVER_URL was made for the case where litecord is behind
a reverse proxy (nginx / cloudflare, etc). If the instance
isn't behind a reverse proxy, you can set WEBSERVER_URL to your
own local address.
2018-07-21 17:08:41 -03:00
slice 753dc03fc7
remove required_action
this is needed as it breaks the client
2018-07-21 11:53:00 -07:00
slice 4ff0314ab6
disable game tab by default 2018-07-21 11:52:42 -07:00
slice fedfc97c96
make nonces strings 2018-07-21 11:52:37 -07:00
slice db7ea18f09
add voice and science bps 2018-07-21 11:52:21 -07:00
slice 77a260706d
remove quart-cors 2018-07-21 09:37:34 -07:00
slice bc9d1e8908
fix state manager removal 2018-07-21 09:35:55 -07:00
slice 681e35db5a
fix incorrect converters 2018-07-21 09:35:50 -07:00
slice cb70842280
use ws settings for gateway endpoint 2018-07-21 09:35:43 -07:00
slice 491bdf31df
fix incorrect http status code for auth routes 2018-07-21 09:35:35 -07:00
slice 29342eb9db
update deps 2018-07-21 09:35:25 -07:00
Luna Mendes 7876c4153d blueprints.guilds: add kick/ban related routes
- schema: add voice_region type validator
2018-07-06 17:17:08 -03:00
Luna Mendes 93933fd8f5 add empty webhooks blueprint 2018-07-06 16:07:42 -03:00
Luna Mendes 1e8672656c add sample nginx.conf 2018-07-06 03:31:12 -03:00
Luna Mendes 6d8af8aef3 Add Quart-CORS 2018-07-06 03:17:38 -03:00
Luna Mendes 545d261bdd schema.sql: fix syntax 2018-07-06 02:29:17 -03:00
Luna Mendes 0ca45c781e blueprints.channels: add implementations for some routes
more specifically edit/delete message, and all 3 pin-related routes.

 - snowflake: add snowflake_datetime
2018-07-04 17:40:27 -03:00
Luna Mendes 59127ad197 blueprints.channels: add message sending
It is clunky when sending messages as Atomic, nor we have proper channel
management, but it works.

 - dispatcher: add sub_many
 - errors: add failsafe on LitecordError.message
 - errors: add ChannelNotFound
 - gateway.websocket: add dispatcher to WebsocketObjects
 - schemas: add regexes for mentions
 - storage: add get_channel, get_message
2018-07-03 01:02:26 -03:00
Luna Mendes 4ea3d353b3 litecord.blueprints: add channels blueprint 2018-07-02 05:06:57 -03:00
Luna Mendes d62db421b0 gateway.websocket: add basics of resuming
- gateway.state: add PayloadStore
 - state: add last_seq
 - gateway.websocket: send string on non zlib-stream
 - gateway.websocket: add cleanup of state on ws close
2018-06-24 18:28:28 -03:00
Luna Mendes 2276308c5d blueprints.guild: use guild_id = role_id on at-everyone's role
- gateway.websocket: add user_ready function
 - storage: add guild_id by default on member roles
 - storage: add get_role_data
 - schema.sql: change default color from 0 to 1
2018-06-23 21:18:19 -03:00
Luna Mendes 3258dc94d5 gateway.websocket: implement ZLIB streaming
With this comment we have a proper READY event that can be
successfully parsed by discord.py! hooray for progress!

 - gateway.websocket: add dummy handler for op 1
 - gateway.websocket: change op 0 to op 2
 - storage: fix 'None' strings on channel IDs
 - run: use logbook.compat.redirect_logging()
2018-06-23 20:16:10 -03:00
Luna Mendes 21da0e0d3a blueprints.guild: add implementations for more routes
- Pipfile: add Cerberus for data validation
 - blueprints.guilds: add guild_owner_check
 - blueprints.guilds: simplify GUILD_MEMBER_UPDATE dispatch
 - litecord: add schemas.py
 - run: get json of errors
2018-06-23 17:19:22 -03:00
Luna Mendes b0d5a97c36 blueprints.guilds: add GUILD_MEMBER_UPDATE dispatch 2018-06-23 15:19:04 -03:00
Luna Mendes de98d0f609 blueprints.guild: use EventDispatcher
- dispatcher: add sub_guild, unsub_guild, remove_guild, dispatch_guild
 - gateway.state_manager: fix fetch_states
 - gateway.websocket: add current_shard, shard_count to atributes
 - schema: add ON DELETE CASCADE to channel tables
2018-06-21 17:59:08 -03:00
Luna Mendes b085df207d blueprints.guilds: add implementations for some routes
- errors: add NotFound, GuildNotFound
 - storage: add get_member_data_one, get_member_multi
2018-06-21 16:54:23 -03:00
Luna Mendes 183013f8f9 blueprints: add guilds blueprint
- gateway.websocket: merge get_guild and get_guild_extra
 - gateway.websocket: only apply too many shards close when
     guilds > 2500
 - storage: detach state usage
 - storage: fix large calc on get_guild_extra
2018-06-21 03:16:13 -03:00
Luna Mendes f5ea44c8d7 blueprints: add users.py blueprint
- errors: change AuthError to Unauthorized and Forbidden
 - auth: fix bug on token_check
 - storage: add Storage.get_user_guilds
2018-06-20 23:29:30 -03:00
Luna Mendes cb8ab6d836 gateway.websocket: remove comment about bots 2018-06-20 17:40:35 -03:00
Luna Mendes c477b2ed50 storage: add channel fetching logic
- litecord: add enums
 - storage: add get_user
 - storage: use column::text instead of str() in some cases
2018-06-20 17:39:21 -03:00
Luna Mendes 3eb6d5e60f litecord: add Storage
Storage serves as a way to reduce code repeatbility. So that we
don't need to keep repeating the same SQL statements over and over,
and to detach some SQL calls into their own code (like guild fetching)

 - gateway.websocket: add WebsocketObjects to hold db, state_manager,
    storage and loop

 - gateway.websocket: add _make_guild_list
 - schema: add members.deafened, members.muted
2018-06-20 16:53:22 -03:00
slice f7d530c787
add a HTTP 500 handler 2018-06-19 18:17:00 -07:00
slice c88148271d
make make_app set app.debug as specified in config 2018-06-19 18:13:13 -07:00
slice efbcbafce4
remove jsonified exception handler 2018-06-19 18:13:03 -07:00