Guest User

Untitled

a guest
Apr 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. fn expanded_record_from_response(mut response: Response, log: &slog::Logger) -> Result<HashMap<String, String>, String>{
  2. match response.status() {
  3. StatusCode::Ok => {
  4. match response.json().ok() {
  5. Some(parsed_response) => {
  6. match response.headers().get_raw("x-request-id") {
  7. Some(request_id) => {
  8. match String::from_utf8(request_id.one().unwrap().to_vec()).ok() {
  9. Some(id_from_raw) => {
  10. info!(log, "Successfully parsed record and assigned Request ID: {:?}", id_from_raw);
  11. },
  12. _ => {
  13. info!(log, "API reported success, but no Request ID was provided.");
  14. }
  15. }
  16. }
  17. _ => {
  18. info!(log, "API reported success, but no Request ID was provided.");
  19. }
  20. };
  21. Ok(response_to_fees_map(parsed_response))
  22. },
  23. _ => {
  24. let message = "Could not parse response even though it was OK (200)".to_owned();
  25. error!(log, "{:?}", message);
  26. Err(message)
  27. }
  28. }
  29. },
  30. StatusCode::BadRequest => {
  31. let error_response: Option<FeesErrors> = response.json().ok();
  32. match error_response {
  33. Some(err_res) => {
  34. error!(log, "Missing required field(s): {:?}", err_res.errors[0].data.keys());
  35. Ok(HashMap::new())
  36. },
  37. _ => {
  38. error!(log, "Bad Request with message: {:?}", response.text().ok().unwrap());
  39. Ok(HashMap::new())
  40. }
  41. }
  42. },
  43. StatusCode::InternalServerError => {
  44. let json_response = match response.text().ok() {
  45. Some(message) => {
  46. let err_res = str::replace(&message, "<h1>", "");
  47. error!(log, "{:?}", str::replace(&err_res, "</h1>", ""));
  48. },
  49. _ => ()
  50. };
  51. Err("Internal Server Error".to_owned())
  52. },
  53. _ => Err("Something Broke".to_owned())
  54. }
  55. }
Add Comment
Please, Sign In to add comment