diff --git a/crates/lox-distributor/src/main.rs b/crates/lox-distributor/src/main.rs index 0e0f1fe..58f2252 100644 --- a/crates/lox-distributor/src/main.rs +++ b/crates/lox-distributor/src/main.rs @@ -120,6 +120,10 @@ async fn handle( let bytes = body::to_bytes(req.into_body()).await.unwrap(); verify_and_send_issue_invite(bytes, context.ba) }), + (&Method::POST, "/redeem") => Ok::<_, Infallible>({ + let bytes = body::to_bytes(req.into_body()).await.unwrap(); + verify_and_send_redeem_invite(bytes, context.ba) + }), _ => { // Return 404 not found response. Ok(Response::builder() @@ -219,6 +223,15 @@ fn verify_and_send_issue_invite(request: Bytes, ba: Arc>) -> R prepare_header(issue_invite_resp_str) } +fn verify_and_send_redeem_invite(request: Bytes, ba: Arc>) -> Response { + let req: proto::redeem_invite::Request = serde_json::from_slice(&request).unwrap(); + let mut ba_obj = ba.lock().unwrap(); + let response = ba_obj.handle_redeem_invite(req).unwrap(); + let issue_invite_resp_str = serde_json::to_string(&response).unwrap(); + prepare_header(issue_invite_resp_str) +} + + fn prepare_header(response: String) -> Response { let mut resp = Response::new(Body::from(response));