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
This commit is contained in:
parent
68aeb50175
commit
19ad0eee9f
@ -22,6 +22,8 @@ use dotenv::dotenv;
|
|||||||
mod auth;
|
mod auth;
|
||||||
use auth::AuthReason;
|
use auth::AuthReason;
|
||||||
|
|
||||||
|
mod routes;
|
||||||
|
|
||||||
fn map_qs(query_string_raw: Option<&str>) -> HashMap<&str, &str> {
|
fn map_qs(query_string_raw: Option<&str>) -> HashMap<&str, &str> {
|
||||||
/*
|
/*
|
||||||
* Parse a given query string and build a hashmap from it
|
* Parse a given query string and build a hashmap from it
|
||||||
@ -40,12 +42,17 @@ fn map_qs(query_string_raw: Option<&str>) -> HashMap<&str, &str> {
|
|||||||
map
|
map
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn route_dispatcher(resp: &Response<Body>, meth: &Method, path: &str, params: &HashMap<&str, &str>) {
|
async fn route_dispatcher(resp: &mut Response<Body>, meth: &Method, path: &str, params: &HashMap<&str, &str>) {
|
||||||
// we do have to handle some general hyper errors
|
match (meth, path) {
|
||||||
unimplemented!()
|
(&Method::GET, routes::INVITE_JOIN) => invites::join_invite_code(&mut resp, meth, path, params),
|
||||||
|
_ => {
|
||||||
|
*resp.status_mut() = StatusCode::NOT_FOUND;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn main_responder(request: Request<Body>) -> Result<Response<Body>, hyper::Error>{
|
async fn main_responder(request: Request<Body>) -> Result<Response<Body>, hyper::Error>{
|
||||||
|
use AuthReason::*;
|
||||||
let mut response = Response::new(Body::empty());
|
let mut response = Response::new(Body::empty());
|
||||||
let method = request.method();
|
let method = request.method();
|
||||||
let path = request.uri().path();
|
let path = request.uri().path();
|
||||||
@ -53,11 +60,11 @@ async fn main_responder(request: Request<Body>) -> Result<Response<Body>, hyper:
|
|||||||
|
|
||||||
if let Ok(conn) = Conn::from_url(env::var("DATABASE_URL").unwrap()).await {
|
if let Ok(conn) = Conn::from_url(env::var("DATABASE_URL").unwrap()).await {
|
||||||
// some more information in the response would be great right about here
|
// some more information in the response would be great right about here
|
||||||
match auth::wall_entry(conn, ¶ms).await {
|
match auth::wall_entry(path, conn, ¶ms).await {
|
||||||
AuthReason::Good => route_dispatcher(&response, &method, path, ¶ms).await,
|
OpenAuth | Good => route_dispatcher(&mut response, &method, path, ¶ms).await,
|
||||||
AuthReason::LimitPassed => *response.status_mut() = StatusCode::UNAUTHORIZED,
|
LimitPassed => *response.status_mut() = StatusCode::UNAUTHORIZED,
|
||||||
AuthReason::NoKey => *response.status_mut() = StatusCode::UNAUTHORIZED,
|
NoKey => *response.status_mut() = StatusCode::UNAUTHORIZED,
|
||||||
AuthReason::InternalFailure => *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR
|
InternalFailure => *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
Reference in New Issue
Block a user