Commit Graph

54 Commits

Author SHA1 Message Date
shockrah
89bd257213 * More explicit query string guard in /channels/list endpoint handler
* rtc::make_url now builds websocket urls more robustly incase we have to percent
encode them
2021-04-10 16:45:13 -07:00
shockrah
368c9bc95f + Better logging in main
+
2021-04-07 21:06:08 -07:00
shockrah
3f1dfbf824 Adding rtc notifications to relevant endpoints
! Still need a feature flag to compile this optionally instead of all the time
- Removed warning in main's auth::login_get_jwt call
2021-04-02 13:56:44 -07:00
shockrah
be54ce6a57 - Removing Claim::new since its used once
+ New notify driver function which does the network magic we need
+ Adding event emitters for the following events
"delete-channel"
"create-channel"
"update-nick"
2021-04-02 13:55:21 -07:00
shockrah
e496fbdd1a Message event now asynchonously emitted from /message/send to rtc server
+ Server claims are now also generated per request so this could get some benefit from caching the jwt
One idea is to cache a jwt for a temporary amount of time
+ event! macro also lets us generate json payloads more easily
! Still requiring this module to built under an optional feature however that should be done easily
2021-04-02 12:11:59 -07:00
shockrah
c6a49a8437 User JWT's now have nbf field in claims set in seconds 2021-04-02 12:06:17 -07:00
shockrah
afdeef0a49 More warning removals and more db-lib result wrapping
This should be everything now
2021-03-30 23:00:50 -07:00
shockrah
c45f8d0482 More db-lib ok/err wrapping
Some misc changes that don't really belong with anything else are bundled here
Those changes aren't actually very important however
2021-03-30 22:46:59 -07:00
shockrah
75dcb7b73e No more jwt db checks
Also wrapping relevant db code with ok/err checks
2021-03-30 22:45:39 -07:00
shockrah
5bbc57313f + Json-API now pushes proper new-message event to rtc server correctly
+ Rtc server takes in new-message correctly but with basically no ux/auth for now
This should be fine as we can layer on security afterwards with no issue
2021-03-25 20:46:10 -07:00
shockrah
52fab01119 + Clearer logging from the json api
* Renamed db helper function to be (debatably) more clear in its intentions
	That function and everything in that module is quickly become awful however

+ Adding some notes for later db-lib development
2021-03-24 01:43:52 -07:00
shockrah
975acfd606 Backend REST API changes:
* Fixed weird match with get_online_members
+ Now using special(smoll) Public Member struct for public member data fetches as.
They're size on networks should be pretty small so we can package a ton of them in a single request

DOCS changes:
- Removing references to unix timestamps in seconds
- Removing references to joindate
* Exact content-type values now specified
2021-03-20 22:44:22 -07:00
shockrah
03c41b6833 - Removed joindate from members schema
+ Auth module now uses std::time for time based calculations
! All time notations are i64 and rounded to the Millisecond

* Moving db pool to a lazy static to avoid constructing a whole pool on every request

+ Adding more logging per request, even if its lazy logging
* Content-Types are now correctly written per type
2021-03-20 19:47:59 -07:00
shockrah
988aa9f155 Removal of chrono and async_trait as dependancy in db-lib
Removig chrono from api code as well

Removing chrono as dep in api code
+ Using Content-Type for /message/send content type

Updating cargo lists for removal of fluff deps

Removal of more fluff

Addking makefile to avoid compiling debug builds by accident while developing
2021-03-20 14:59:06 -07:00
shockrah
9ce04e96a7 Query string parameter 'type' is now enforced by the api
+ Flag is literally called 'type'
2021-03-12 02:17:06 -08:00
shockrah
ddb08818b1 Updating schemas to support content_type 2021-03-09 00:03:12 -08:00
shockrah
7125fc954d SERVER_PROTOCOL is now an official env variable for the json-api to read 2021-03-07 23:55:38 -08:00
shockrah
5fc3e2a553 /channels/create refactored to use the new db-lib api
 Reduced branching a shit ton

Testing was ass but it should pass client tests now, back to normal
2021-03-07 17:47:24 -08:00
shockrah
fadc7d6dc1 Removing more unused trait methods in db-lib's channel module
 /channels/list now takes a "type" parameter which defaults to TEXT_CHANNEL(1)
 Refactoring db::Channel::filter to use a more latency friendly approach
 db::Channel::Filter now returns Result<Response<Self>, SqlError>
2021-03-07 14:26:50 -08:00
shockrah
12936d5b1a Removing double log issue with client-tester
 Moving Messages struct in db-lib to root for less namespacing uglyness
 Removing an whole unused trait
 Message::get_time_range now returns a special 'UserMessage' struct that includes the name of the author
 More code must be removed from db-lib since a ton of the trait methods aren't used anymore
2021-03-07 13:29:10 -08:00
shockrah
898a7a8ca2 New /members/single route
 Simple test for /members/single handler
 Should probably add some more tests to verify failure cases
2021-03-05 19:23:50 -08:00
shockrah
b999907540 * channels are now nested in "channels" key 2021-03-03 16:30:39 -08:00
shockrah
05acbfa94e Passing tests for invite routes 2021-02-25 16:05:46 -08:00
shockrah
212173f543 Fixing /join route, time check was backwards oops and it was set to GET not post 2021-02-25 15:31:45 -08:00
shockrah
ab1c9e40f7 Ower creation now gives back prettier output + server meta vars as well 2021-02-25 14:03:34 -08:00
shockrah
93fd8c2cd6 +Adding new tests for /members/me/nickname
* Fixed incorrect param key in endpoint handler
+Adding a ycm conf for easier writing
2021-02-21 18:52:35 -08:00
shockrah
5db976b9de + New route for /members/me/nickname
! No testing yet that comes in next patch, with any required fixes
+ db now has specific method for Member::update_nickk
2021-02-21 17:21:17 -08:00
shockrah
7263df8928 Adding new routes for /members/get_online & /members/me
Passing the previous tests as well
2021-02-20 20:15:43 -08:00
shockrah
c896870397 Reformatting of wiki:
* Adding endpoint docs and correcting some typesetting mistakes
* Change qs params to match documentation
* Splitting up articles to geneate the sidebar links properly'
* Bad baseurl issue fixed in previous patch
2021-02-18 16:29:29 -08:00
shockrah
71ebefce51 Dummy commit 2021-02-13 19:08:21 -08:00
shockrah
25755bf394 Percent decoder func found on crates.io
Link: https://docs.rs/urldecode/0.1.1/src/urldecode/lib.rs.html#1-21

Why rob? Well its slightly modified(very smol change) in that it now takes a &str and allocates a string from it
Later patches will change this so that we don't _always_ allocate frivolously
2021-02-10 23:20:51 -08:00
shockrah
16276c97e0 Moving option parameters to the query string
Large payloads will remain the body as those are typically required for post endpoints such as /message/send
2021-02-10 23:18:24 -08:00
shockrah
eb338e03a0 + Test for qs_param behavior
Pretty simple and contains a special note about qs_param usage
2021-02-05 16:57:31 -08:00
shockrah
769aa72cdf Opting for qs_param to reduce on visual cancer 2021-02-05 16:39:24 -08:00
shockrah
ab9fef2ccc route_dispatcher now reflects new hashmap usage over serde_json::Value's
HashMap of query string parameters is generated in main_responder before passed on
2021-02-05 16:32:03 -08:00
shockrah
33ae768ae4 *+ More qs_param! usage 2021-02-05 16:29:32 -08:00
shockrah
3369b4ec48 - Removing unused code 'process_expires_parameter' function
* Switching to qs_param in only a few cases for now
2021-02-05 16:28:47 -08:00
shockrah
ba5db17706 * Replacing extract_uid with qs_param!(...) usage 2021-02-05 16:25:35 -08:00
shockrah
4c92b20e74 * replacing extract_uid usage with qs_param!(....).unwrap() usage 2021-02-05 16:25:12 -08:00
shockrah
8e98df1d37 - Removed parse_json_params as its no longer used
+ Adding qs_param macro to remove boilerplate in pulling out Option<T> data from hashmaps
2021-02-05 16:24:39 -08:00
shockrah
c2e384a13a */message/send
Now polls content from the request body
* flattened a bunch of checks with data fetches to the db
Outright reduction of branches yey
2021-02-04 01:58:57 -08:00
shockrah
20aca8a069 +Parsing channel_id param correctly
+ Checking for proper permissions in user

moar if let bindings!!!1
2021-02-03 23:29:53 -08:00
shockrah
44b51133d2 * /channels/create handler uses hashmaps
* cleaned up wall of parameter parsing to be less cancerous(read diff to die instantly)
- Removed repeated db::Response in response mutator match

 Simplified how parameters are parsed by making them actually readable
2021-02-03 21:56:09 -08:00
shockrah
c1ef4c6336 -Removed _most_ direct sql manipulation for invite creation
- Removed unused/irrelevant unit tests, which now have to be rebuilt for the new codebase
2021-02-03 21:26:26 -08:00
shockrah
9fac3aa117 * /join route handler now uses hashmaps among and returns more sensible http codes 2021-02-03 21:09:12 -08:00
shockrah
98803eec26 First pass of using hashmaps in /invite/create handler
+ Adding allowed_perm_invite, a helper function pulling permissions form the database to check if the user can make invites
2021-02-03 20:50:06 -08:00
shockrah
45af62ceb3 Inlining helper func for permission checking 2021-02-03 19:31:38 -08:00
shockrah
e36d0e5823 * using hashmap instead serde::ValueMap for extract_uid 2021-02-03 19:30:46 -08:00
shockrah
5737f9824d Setting payload for jwt with http:set_json_body
- Removed visual clutter extracting uid from user params
2021-02-03 19:30:12 -08:00
shockrah
e21c5c7624 auth module now parses from the query string hashmap, not serde_values 2021-02-03 13:55:25 -08:00