Commit Graph

352 Commits

Author SHA1 Message Date
shockrah
5ab40f2b50 basic send_message test 2020-08-02 18:38:36 -07:00
shockrah
6416370e95 Message changenotes
* send_message fails when a non-existant channel is specified
* send_message now works with existant channel
* send_message: notifies client of bad channel parameters
* send_message: sends a generic 500 on every other error
2020-08-02 18:38:07 -07:00
shockrah
d588128b9e Channel changenotes:
* create channel now responds correctly given various parameters
* insert channel now errors out properly with ? syntax
* new uses added to align with sql types
2020-08-02 18:32:02 -07:00
shockrah
df395e3b50 updated foreign key name in messages schema 2020-08-02 16:38:50 -07:00
shockrah
014b6a06c8 oops 2020-08-01 18:57:49 -07:00
shockrah
a00dd2b442 Merge branch 'testing' into messaging 2020-07-31 22:10:31 -07:00
shockrah
a24126034b removed unused type 2020-07-31 22:10:27 -07:00
shockrah
c8055e07cc main is now setup to handle pipeline environments and regular .env filled environments 2020-07-31 21:49:07 -07:00
shockrah
fb2181aa39 moving pipeline script to root 2020-07-31 00:10:15 -07:00
shockrah
de4493c7ab setting ci, thisi commit will fail for now 2020-07-31 00:08:49 -07:00
shockrah
000a75c81f user name+id now added to params and channels table now accepts channel_name 2020-07-30 23:50:03 -07:00
shockrah
b8c4cee57f send message now build properly w/ no warns 2020-07-30 23:31:20 -07:00
shockrah
40ade4ebcc current build passing all tests for channel creation/deletion 2020-07-29 19:54:29 -07:00
shockrah
34a04f7887 channel deletion seems to pass basic unit tests 2020-07-29 19:46:44 -07:00
shockrah
362eb53650 tabs before some messages for clearer reasoning on what happen on each request 2020-07-29 19:44:52 -07:00
shockrah
7ea3aef1cb removing more legacy code 2020-07-29 00:38:30 -07:00
shockrah
de6c8af19d localhost was literall mispelled 2020-07-29 00:35:34 -07:00
shockrah
8d520117d4 new channel create/delete routes added 2020-07-29 00:28:09 -07:00
shockrah
677d0a3b36 removing legacy code 2020-07-29 00:26:37 -07:00
shockrah
351a9ba30c list channels and create channels behaving properly based on inputs, delete_channel not working just yet 2020-07-29 00:26:19 -07:00
shockrah
c7922d4249 channel names must now be unique 2020-07-29 00:21:33 -07:00
shockrah
b6db34f28f option to always show body of response added 2020-07-28 22:45:52 -07:00
shockrah
b5041a4f8d fresh cargo lock 2020-07-28 22:15:04 -07:00
shockrah
3612f5835c testing around channel deletion confirmed working 2020-07-27 21:04:13 -07:00
shockrah
f0c7c9c69b list channels now nearly completely tested
pattern for testing getting fleshed out for real now
2020-07-27 16:26:40 -07:00
shockrah
e1b0e013b2 curl macro to remove code noise elsewhere 2020-07-27 16:16:52 -07:00
shockrah
cb8b4cece1 better error logging 2020-07-27 16:16:37 -07:00
shockrah
c490343442 list_all_channels now serves as a good template to use for other funcs to follow suit 2020-07-27 15:43:41 -07:00
shockrah
fb63007a85 moved common common func off to main 2020-07-27 15:43:00 -07:00
shockrah
f536674e73 more stuff for the sample env file 2020-07-21 21:33:12 -07:00
shockrah
1eed2f4027 basic invites manager chronjob thing 2020-07-21 18:13:33 -07:00
shockrah
6a9f91429e helpful setup script for creating the dev sql user in testing 2020-07-21 15:00:06 -07:00
shockrah
84d3464f6c base dependancies for invites manager 2020-07-21 14:47:03 -07:00
shockrah
d9a6ea30a7 invites now has a max_uses column and less strict column requirements 2020-07-21 14:30:23 -07:00
shockrah
99507302f9 Removing api tests form members mod as those are done with curl in tests/
Base member creation being added in this commit notes to follow

struct Member has had its field types changed to db_types::* types
Member::to_json was added to support simple json serialization into responses
struct InsertableMember added because `id` is generated by SQL for us
- this means we have to do two queries 1 to insert and 2 to fetch
- mysql_async does not provide an inlined way of fetching a recently added row

func general_new_user is only checking for a `name`parameter
- falls back to a basic default name for those that don't set a name on jooin
- handles its  own sub errors so the main dispatcher doesn't care about after move
2020-07-13 21:59:28 -07:00
shockrah
46403913a4 logging bad auth requests 2020-07-13 21:47:00 -07:00
shockrah
1eab32889a more testing for channel list 2020-07-13 21:41:04 -07:00
shockrah
2b70d37370 start of basic api tests, all tests still individually runnable 2020-07-13 21:14:57 -07:00
shockrah
0df6702a9d adding a decent structure for testing the restful api from this point forward 2020-07-13 20:44:06 -07:00
shockrah
73f69cec48 channels list route passing proper input pass 2020-07-13 20:35:04 -07:00
shockrah
0a0967d196 fixed auth module not using str version of the secret key 2020-07-13 20:31:14 -07:00
shockrah
ed6c19314a defaults for Dynamic routes in case thigns don't go well 2020-07-13 19:42:59 -07:00
shockrah
1810e5ebc8 removing unused enum members 2020-07-13 19:42:13 -07:00
shockrah
d013afe054 removing fluff module and adding sensible database type aliases 2020-07-13 19:40:37 -07:00
shockrah
5c2c4abd76 making auth wall a little bit more lenient for now until testing has some reasonable methodology 2020-07-13 19:40:13 -07:00
shockrah
65ccf70091 adding secret as a primary key in members table 2020-07-13 19:39:35 -07:00
shockrah
3da6c487df adding funcs to differentiate dynamic routes 2020-07-12 22:42:50 -07:00
shockrah
a141974904 container module for later permission flags 2020-07-12 22:27:20 -07:00
shockrah
7a64c64e98 aliases for common translational types for sql 2020-07-12 18:57:03 -07:00
shockrah
75f01edac6 moving keys into members table 2020-07-12 18:50:24 -07:00
shockrah
dfd1d6186c New testing lib for testing async functionality 2020-07-12 17:33:05 -07:00
shockrah
ef7eca3462 poc for insertion of new users 2020-07-12 15:09:03 -07:00
shockrah
898fcf9ba8 removed legacy moudles 2020-07-12 15:08:18 -07:00
shockrah
180553e9d1 removed unused scripts 2020-07-12 15:06:02 -07:00
shockrah
12211b8945 removed ancient sample config file 2020-07-10 20:19:46 -07:00
shockrah
523985ce61 removed unused struct MsgParam 2020-07-10 19:54:41 -07:00
shockrah
cdc2f0a13a exposed more funcs as needed 2020-07-05 22:04:30 -07:00
shockrah
ffaf602bef Updating messages table now on request for send_message
- has not undergone any testing however and we're not building a response yet
2020-07-05 22:04:10 -07:00
shockrah
1944152252 messages schema now ready to be used 2020-07-05 20:48:15 -07:00
shockrah
f827cef9c5 base send_message ready to take and process params into our db 2020-07-05 15:06:33 -07:00
shockrah
112c9f34cd * renamed users schema to members basically and added foreign key ref to keys schema 2020-07-05 15:05:34 -07:00
shockrah
9c4323c0c5 removing used use 2020-07-04 23:06:23 -07:00
shockrah
0d9b945301 *Speccing the rows which wall_entry requests
Generally more explicit behavior is provided
*NOTE: if this call succeeds then we have fully authenticated and subsequent calls should have acccess to "secret" in the serialized params structure, thus unwraps should be fine as they'll be proven via informal  induction
2020-07-04 23:05:58 -07:00
shockrah
cdc88b8365 * fixed formating/comments in users schema
* channels schema now uses a bigint unsigned for pid
this is to keep consistent with notion of id's being usize|u64 in rust
* foreign key constraint added to keys table referencing user rows
2020-07-04 22:52:59 -07:00
shockrah
a074498f61 - removed dead code
- removed mutability in return object (parse_params)
2020-07-04 21:18:11 -07:00
shockrah
a47f4c4c46 ! admin update
removing and ignoring old + new things respectively
2020-07-04 19:39:04 -07:00
shockrah
c7d42709c2 adding base for invite manager microservice 2020-07-04 19:38:09 -07:00
shockrah
cb3aec0696 + updated parsing funcs to take advantage of serde_json
+removed unused code segmments
+added helper function to pull string from Option<i64> for serde_json
*exposing Channel struct to other modules
2020-07-04 19:37:42 -07:00
shockrah
e8e1a13d6d auth::wall_entry now uses &serde_json::Value's as a param 2020-06-18 22:31:15 -07:00
shockrah
2e350133a1 http_params::parse_params now using serde_json to convert the body into a Value set
Why: The idea is that writing a body parser is both really annoying and not really optimal
At this time I need some way of getting body params easily while endpionts are tested
at some point we'll come up with a smaller footprint way of parsing http parameters
Ideally one that also comes with the ability to combine parameters but,
for now using serde_json suffices.
2020-06-18 22:30:40 -07:00
shockrah
250efd71d9 serde_json added to cargo cache 2020-06-18 22:04:57 -07:00
shockrah
5e21811b8d converting route_join_invite_code to use new json Value types 2020-06-18 22:04:45 -07:00
shockrah
3b0b79c525 messaging module ready to start testing send functionalities 2020-06-18 20:11:31 -07:00
shockrah
32c8619d93 moving http parameterization to its own module 2020-06-18 20:10:58 -07:00
shockrah
0b6b5e51c6 new module to handle parsing parameters from requests 2020-06-18 20:10:35 -07:00
shockrah
63c1fa1137 new static route string for /message/send 2020-06-17 12:38:33 -07:00
shockrah
4985c7f07f structures for members and badges 2020-06-17 12:37:37 -07:00
shockrah
17a23d41f5 switched the order fields to match what rust typles expect 2020-06-03 01:20:12 -07:00
shockrah
50962598e5 fixed borrow/moving issue with create_channel call
removed some unsed variables
2020-06-03 00:14:45 -07:00
shockrah
7fa103b1dc primary dispatcher to insert channels now built
parameter parsing functino was built for the primary dispatcher
New InsterableChannel structure added: mysql controls the id field for us
2020-06-03 00:08:35 -07:00
shockrah
9e6f32e36e Description field is now optional as not all channels will need one 2020-06-03 00:02:22 -07:00
shockrah
8d149014e1 Added documentation to current code
Explaining why things are being done
2020-06-02 22:29:34 -07:00
shockrah
4f71e566c3 Removed sql_traits module as it was merely a stepping stone module
Channel struct now adpots a from_tup method and can be seen in use in get_channels_vec
2020-06-02 22:10:28 -07:00
shockrah
08e5b87ba4 Helper functionality
InviteRow now has some utilities built into it to help with translating values from various types needed throughout the codebase
+from_tuple -> because mysql is used to grab tuples before structs
+as_json_str -> because we respond primarily with json payloads
list_channels is considered a main entry point from the dispather and thus handles errors  itself
2020-06-02 22:04:54 -07:00
shockrah
528d7502d1 removed perms and limit on channels until channels module is done 2020-06-02 22:01:21 -07:00
shockrah
d2eb0597c3 new route regarding invite creation being built 2020-06-02 17:50:23 -07:00
shockrah
b2a6da2561 auth::wall_entry now follows the same error system as invites module
Result of function forwards to its caller so we dont deal w/ mysql so much
2020-06-02 17:05:54 -07:00
shockrah
2400b89b12 added result return types to invites module functions
this lets us cut down on worrying about mysql errors
Mysql error responsibility is now the route dispatchers problem
Route dispatcher itself can easily dispatch to another handler
2020-06-02 17:05:14 -07:00
shockrah
20f6273ad7 Fixed compile issue regardign :: vs . typo 2020-06-02 03:45:54 -07:00
shockrah
dd3bbeabd8 InviteRow structure has some methods listed below:
+ new() -> create a new ready to insert invite
+ from_tuple -> helps us translate db responses into a struct
+ as_json_str -> String which we can use as a json payload(jank but whatever it works with proper headers)

FUnctions:
get_invite_by_code: as the name implies grabs an invite assuming its in our db otherwise None
record_invite_usage: blindly modifies the row in the schema, assumes that if we get to this point we're ok to ignore erroneous possibilities
join_invite_code: main dispatcher for joining using the /invite/join route
create_invite: meant to the be the route handler for creating invites later on
Needed: test module since we've basically reworked the whole auth/invite system in one day
2020-06-02 03:44:33 -07:00
shockrah
43a122b855 Removing old unused files from project 2020-06-02 03:39:39 -07:00
shockrah
d1cfc4284c child calls from main_responder (see route_dipatcher + route handlers) now borrow a connection for the sql db 2020-06-02 03:25:11 -07:00
shockrah
19ad0eee9f OpenAuth + Good both have the same kind of dispatcher response
route dispatcher work begins with dispatching to invites::join_invite_code
Fixed the non mutable ref borrowing in funcs that required mutable references like most that get called by route_dispatcher
2020-06-02 01:32:43 -07:00
shockrah
68aeb50175 checking for open routes which require no aut in wall_entry 2020-06-02 01:29:05 -07:00
shockrah
d02f2d9eb7 conatiner module for routes 2020-06-02 01:28:40 -07:00
shockrah
c7c6f530a0 handling ctrl-c 2020-06-02 00:50:09 -07:00
shockrah
9033c80369 Exhaustive response to various authentication failures
response route_dispatcher now guaranteed to fire on proper authentication only
2020-06-02 00:47:28 -07:00
shockrah
e2abc49087 added counter to keys table
this lets us increment uses when a key is going to be used
2020-06-02 00:44:53 -07:00
shockrah
8360efced5 auth::wall_entry now verifies keys upon request
We can now decide what kind of authorization result triggers what kind of responses to the users
Further more error handling has to happen closer to application logic which is the main trade-off of our architecture
2020-06-02 00:32:15 -07:00
shockrah
5ad23eed8c adding mysql_async to dependancy list 2020-06-01 23:05:06 -07:00