! wat - because have to do maintain permissions on a per request level we have
to do this check for permissions at what is basically every level, this does
mean we have to hit the database for a lot of routes however there is a check
that requests go through in order to avoid hitting the database whenever possible
+ rng field in claims now has real purpose
It's purpose is to act as a validator field in the jwt table. By verifying rng
fields we no longer have to store whole jwt's
This dep was already there but just being used (as we're using serde). Now we can use it at the db layer which makes neighbor struct creation easier
* Cargo locks are being updated to reflect new dependancy changes
These changes actually reduce the dependancy count overall
+ Adding a very simple table to hold all the neighbors that an instance may want to reference
At some point we may want to support vanity join urls and this would be a good place to reference those
There would also need to be a way for admins to add/edit/remove vanity urls but that's for another patch
+ Adding some more invite status checks
+ Adding a verbose invite usage check for sanity reasons
- Removing run-api-tests script as it now goes into the /scripts/ directory
+ Adding the wss-hmac setup from the command line arg
It was literally just 1 if statement that I forgot to write in
This is really just for testing purposes since the files tend to be in
awkward to reach path
- Removing if args.len == 0 check
Basically cannon-fodder tbh
* Auth now reads hmac path from environment var
! All of the above is added for the wss hmac as well
+ Adding command line flag [-W/--wss-hmac] to specify wss-hmac file path
Secret value given to user was literally the encrypted secret because I forgot
to rebind it
- removing dev key lmaoooo
These are generated super easily and this key doesn't actually go to anything
so its really not a problem, although it is annoying that its there
+ Moving tests to the new client
- Removing web/ module
! Currently all tests are passing 17/17 but the real trickery comes with doing this
on CI which should will likely take some magic somewhere
Or we'll just extend the freechat docker image to finally have all the required
dependancies and just test on that with diesel and what not
This is really only for check if a particular channel exists for /messages/recent's backend
* Flattening db-lib::Message::last_n
SHould make code more readable as it now has a more linear flow
* api::Messages::recent_messages now 404's when a channel that doesn't exist is request
Problem: the old test suite was extremely inflexible
This meant that making new tests took way too much time.
+ This new rework makes the new client's backend much thinner and less "magical"
With less magic going on we can pass way more data more easily to the actual
http-request engine making the convenience wrapper over top it much more flexible
Translating old tests to the new engine might take a while but for now the old
client codebase is completely deprecated and will no longer be used+updated
Better matching against return types so we're not throwing away errors
This just entails swapping the if let for a match statement
* db-lib::Message::send has more updated docs on what variants of Response it returns
* api::messages::send_message has better error logging now and more relevant comments
This is more heavily used in Message::send as a way of discerning "real" server errors
from those that are caused by user input. The name itself might not be super fitting either
* Moving code for inserting textual messages into its own function
This splits up the logic a bit for Message::send but this segment of logic is also
much simpler than that of file upload
* Flattening Message::send overall
Keeping this function as flat as can be is crucial as it is one of the heavier+most
important funcs in the whole JSON API codebase
Files are now also generated correctly and asynchronously
+ Adding new flags to sample .env file
+ Wrapper script run-api-tests.sh which does as its called
- Removing build.sh in favor of run-api-tests.sh
Makefile takes care of building, and apitests are ran with special script anyway
This api method is made for clients to easily say "give me the n[1,100] latest
messages in some channel
This commit contains code that is largely untested but contains some base code
such that I can correct issues in the next _tested_ commit
! Start taking public user params like this in the JWT to reduce on network hits
It's cheap and reliable enough but the idea just now came to me so do that at some point
+ New notify driver function which does the network magic we need
+ Adding event emitters for the following events
"delete-channel"
"create-channel"
"update-nick"
+ 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
This version comes with the benefit of having much more concise exec_map functionality among other things
This commit and the following ones also move db-lib to using a more 'try' based approach
+ 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
* 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
! Initial id size will stay as u64 but u128 are easily the next major change
This change shouldn't break clients written in high level languages since most already use 128's under the hood anyway
- This commit also removes the auto_increment flag from basically everything that uses RNG id's
! Requirements for variable message fetching not yet met
! /message/get?id=<id> needs a way of passing back file contents
! The file upload is sketchy at best and not necessarily guaranteed to sync the
database with the file system
* 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
+ 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
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
➕ /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>
➕ 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
* 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
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
* payloads for things like /message/send are now send through the request body
* no longer sending body data in gets
This whole patch is basically so we can allow js clients to exist btw -_-
* 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