diff --git a/src/error.rs b/src/error.rs index c3a2a13..3cba725 100644 --- a/src/error.rs +++ b/src/error.rs @@ -2,6 +2,8 @@ use std::convert::From; use std::error; use std::fmt; +use reqwest::StatusCode; + /// Wraps several types of errors. #[derive(Debug)] pub struct Error { @@ -22,6 +24,13 @@ impl Error{ msg } } + + pub fn http(status: StatusCode, body: String) -> Error { + Error { + kind: ErrorKind::FlagsmithAPIError, + msg: format!("HTTP Api error: {status}, {body}") + } + } } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff --git a/src/flagsmith/mod.rs b/src/flagsmith/mod.rs index 3ca80b8..dd569de 100644 --- a/src/flagsmith/mod.rs +++ b/src/flagsmith/mod.rs @@ -434,13 +434,11 @@ fn get_json_response( request = request.body(body.unwrap()); }; let response = request.send()?; - if response.status().is_success() { + let status = response.status(); + if status.is_success() { return Ok(response.json()?); } else { - return Err(error::Error::new( - error::ErrorKind::FlagsmithAPIError, - response.text()?, - )); + return Err(error::Error::http(status, response.text()?)); } }