Send Response as json, errors with OK Status Code
This commit is contained in:
parent
c2a40658e3
commit
ed7c94b912
|
@ -17,7 +17,7 @@ readme = "README.md"
|
|||
[dependencies]
|
||||
julianday = "1.2.0"
|
||||
base64 = "0.21.6"
|
||||
hyper = { version = "0.14.28", features = ["server"] }
|
||||
hyper = { version = "0.14.28", features = ["deprecated", "backports","server"] }
|
||||
hex_fmt = "0.3"
|
||||
futures = "0.3.29"
|
||||
time = "0.3.31"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
use hyper::{body::Bytes, header::HeaderValue, Body, Response};
|
||||
|
||||
use lox_library::{
|
||||
bridge_table::{BridgeLine, EncryptedBucket, MAX_BRIDGES_PER_BUCKET},
|
||||
proto::{
|
||||
|
@ -12,6 +11,7 @@ use rdsys_backend::proto::{Resource, ResourceState};
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use lox_zkp::ProofError;
|
||||
use serde_json::json;
|
||||
use std::{
|
||||
cmp::Ordering,
|
||||
collections::HashMap,
|
||||
|
@ -446,12 +446,16 @@ impl LoxServerContext {
|
|||
Ok(resp) => prepare_header(resp),
|
||||
Err(e) => {
|
||||
println!("Error parsing Invite to JSON");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
println!("Error generating open invitation");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -464,7 +468,9 @@ impl LoxServerContext {
|
|||
Ok(resp) => prepare_header(resp),
|
||||
Err(e) => {
|
||||
println!("Error parsing encrypted bridgetable to JSON");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -476,7 +482,9 @@ impl LoxServerContext {
|
|||
Ok(resp) => prepare_header(resp),
|
||||
Err(e) => {
|
||||
println!("Error parsing Pubkeys to JSON");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -485,7 +493,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_open_cred(self, request: Bytes) -> Response<Body> {
|
||||
let req = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.open_inv(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -495,7 +507,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Open Invitation request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -504,7 +518,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_trust_promo(self, request: Bytes) -> Response<Body> {
|
||||
let req: trust_promotion::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.trust_promo(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -514,7 +532,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Trust Promotion request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -523,7 +543,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_trust_migration(self, request: Bytes) -> Response<Body> {
|
||||
let req: migration::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.trust_migration(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -533,7 +557,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Trust Migration request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -542,7 +568,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_level_up(self, request: Bytes) -> Response<Body> {
|
||||
let req: level_up::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.level_up(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -552,7 +582,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Level up request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -561,7 +593,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_issue_invite(self, request: Bytes) -> Response<Body> {
|
||||
let req: issue_invite::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.issue_invite(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -571,7 +607,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Issue invite request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -580,7 +618,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_redeem_invite(self, request: Bytes) -> Response<Body> {
|
||||
let req: redeem_invite::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.redeem_invite(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -590,7 +632,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Redeem Invite request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -599,7 +643,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_check_blockage(self, request: Bytes) -> Response<Body> {
|
||||
let req: check_blockage::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.check_blockage(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -609,7 +657,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Check blockage request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -618,7 +668,11 @@ impl LoxServerContext {
|
|||
pub fn verify_and_send_blockage_migration(self, request: Bytes) -> Response<Body> {
|
||||
let req: blockage_migration::Request = match serde_json::from_slice(&request) {
|
||||
Ok(req) => req,
|
||||
Err(e) => return prepare_error_header(e.to_string()),
|
||||
Err(e) => {
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
return prepare_header(val);
|
||||
}
|
||||
};
|
||||
match self.blockage_migration(req) {
|
||||
Ok(resp) => {
|
||||
|
@ -628,7 +682,9 @@ impl LoxServerContext {
|
|||
}
|
||||
Err(e) => {
|
||||
println!("Invalid Blockage Migration request, Proof Error");
|
||||
prepare_error_header(e.to_string())
|
||||
let response = json!({"error": e.to_string()});
|
||||
let val = serde_json::to_string(&response).unwrap();
|
||||
prepare_header(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -641,11 +697,3 @@ fn prepare_header(response: String) -> Response<Body> {
|
|||
.insert("Access-Control-Allow-Origin", HeaderValue::from_static("*"));
|
||||
resp
|
||||
}
|
||||
|
||||
// Prepare HTTP Response for errored Server Request
|
||||
fn prepare_error_header(error: String) -> Response<Body> {
|
||||
Response::builder()
|
||||
.status(hyper::StatusCode::BAD_REQUEST)
|
||||
.body(Body::from(error))
|
||||
.unwrap()
|
||||
}
|
||||
|
|
|
@ -130,9 +130,13 @@ async fn rdsys_request(rtype: ResourceInfo, tx: mpsc::Sender<ResourceState>) {
|
|||
rtype.token.clone(),
|
||||
rtype.types.clone(),
|
||||
)
|
||||
.await{
|
||||
Ok(resources)=> resources,
|
||||
Err(e) => {println!("No resources received from rdsys: {:?}", e); continue},
|
||||
.await
|
||||
{
|
||||
Ok(resources) => resources,
|
||||
Err(e) => {
|
||||
println!("No resources received from rdsys: {:?}", e);
|
||||
continue;
|
||||
}
|
||||
};
|
||||
tx.send(resources).await.unwrap();
|
||||
}
|
||||
|
|
|
@ -336,7 +336,7 @@ mod tests {
|
|||
.body(Body::empty())
|
||||
.unwrap();
|
||||
let not_found_response = handle(th.context.clone(), req).await.unwrap();
|
||||
assert_eq!(not_found_response.status(), StatusCode::BAD_REQUEST);
|
||||
assert_eq!(not_found_response.status(), StatusCode::OK)
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
Loading…
Reference in New Issue