Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn expanded_record_from_response(mut response: Response, log: &slog::Logger) -> Result<HashMap<String, String>, String>{
- match response.status() {
- StatusCode::Ok => {
- match response.json().ok() {
- Some(parsed_response) => {
- match response.headers().get_raw("x-request-id") {
- Some(request_id) => {
- match String::from_utf8(request_id.one().unwrap().to_vec()).ok() {
- Some(id_from_raw) => {
- info!(log, "Successfully parsed record and assigned Request ID: {:?}", id_from_raw);
- },
- _ => {
- info!(log, "API reported success, but no Request ID was provided.");
- }
- }
- }
- _ => {
- info!(log, "API reported success, but no Request ID was provided.");
- }
- };
- Ok(response_to_fees_map(parsed_response))
- },
- _ => {
- let message = "Could not parse response even though it was OK (200)".to_owned();
- error!(log, "{:?}", message);
- Err(message)
- }
- }
- },
- StatusCode::BadRequest => {
- let error_response: Option<FeesErrors> = response.json().ok();
- match error_response {
- Some(err_res) => {
- error!(log, "Missing required field(s): {:?}", err_res.errors[0].data.keys());
- Ok(HashMap::new())
- },
- _ => {
- error!(log, "Bad Request with message: {:?}", response.text().ok().unwrap());
- Ok(HashMap::new())
- }
- }
- },
- StatusCode::InternalServerError => {
- let json_response = match response.text().ok() {
- Some(message) => {
- let err_res = str::replace(&message, "<h1>", "");
- error!(log, "{:?}", str::replace(&err_res, "</h1>", ""));
- },
- _ => ()
- };
- Err("Internal Server Error".to_owned())
- },
- _ => Err("Something Broke".to_owned())
- }
- }
Add Comment
Please, Sign In to add comment