Compare commits
2 commits
147186f8dc
...
6fa7606226
Author | SHA1 | Date | |
---|---|---|---|
6fa7606226 | |||
23abb7706e |
3 changed files with 15 additions and 3 deletions
|
@ -11,6 +11,10 @@ url = "https://api.alemi.dev/"
|
||||||
url = "https://api.alemi.dev/look/into/the/void"
|
url = "https://api.alemi.dev/look/into/the/void"
|
||||||
extract = { type = "discard" }
|
extract = { type = "discard" }
|
||||||
|
|
||||||
|
[route.notfound]
|
||||||
|
url = "https://api.alemi.dev/not-found"
|
||||||
|
expect = 404
|
||||||
|
|
||||||
[route.debug]
|
[route.debug]
|
||||||
url = "https://api.alemi.dev/debug"
|
url = "https://api.alemi.dev/debug"
|
||||||
method = "PUT"
|
method = "PUT"
|
||||||
|
|
|
@ -37,6 +37,9 @@ pub enum PostWomanError {
|
||||||
#[error("invalid regex: {0:?}")]
|
#[error("invalid regex: {0:?}")]
|
||||||
InvalidRegex(#[from] regex::Error),
|
InvalidRegex(#[from] regex::Error),
|
||||||
|
|
||||||
|
#[error("request didn't match expected status code: {0:?}")]
|
||||||
|
UnexpectedStatusCode(reqwest::Response),
|
||||||
|
|
||||||
#[error("invalid Json Query: {0}")]
|
#[error("invalid Json Query: {0}")]
|
||||||
JQError(String),
|
JQError(String),
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,8 @@ pub struct Endpoint {
|
||||||
pub headers: Option<Vec<String>>,
|
pub headers: Option<Vec<String>>,
|
||||||
/// body, optional string
|
/// body, optional string
|
||||||
pub body: Option<StringOr<toml::Table>>,
|
pub body: Option<StringOr<toml::Table>>,
|
||||||
|
/// expected error code, will fail if different
|
||||||
|
pub expect: Option<u16>,
|
||||||
/// response extractor
|
/// response extractor
|
||||||
pub extract: Option<StringOr<Extractor>>,
|
pub extract: Option<StringOr<Extractor>>,
|
||||||
}
|
}
|
||||||
|
@ -135,8 +137,11 @@ impl Endpoint {
|
||||||
.headers(headers)
|
.headers(headers)
|
||||||
.body(body)
|
.body(body)
|
||||||
.send()
|
.send()
|
||||||
.await?
|
.await?;
|
||||||
.error_for_status()?;
|
|
||||||
|
if res.status().as_u16() != self.expect.unwrap_or(200) {
|
||||||
|
return Err(PostWomanError::UnexpectedStatusCode(res));
|
||||||
|
}
|
||||||
|
|
||||||
Ok(match self.extract.unwrap_or_default() {
|
Ok(match self.extract.unwrap_or_default() {
|
||||||
StringOr::T(Extractor::Discard) => "".to_string(),
|
StringOr::T(Extractor::Discard) => "".to_string(),
|
||||||
|
@ -181,7 +186,7 @@ async fn format_body(res: reqwest::Response) -> Result<String, PostWomanError> {
|
||||||
None => Ok(res.text().await? + "\n"),
|
None => Ok(res.text().await? + "\n"),
|
||||||
Some(v) => match v.to_str()? {
|
Some(v) => match v.to_str()? {
|
||||||
"application/json" => Ok(serde_json::to_string_pretty(&res.json::<serde_json::Value>().await?)? + "\n"),
|
"application/json" => Ok(serde_json::to_string_pretty(&res.json::<serde_json::Value>().await?)? + "\n"),
|
||||||
"text/plain" => Ok(res.text().await? + "\n"),
|
"text/plain" | "text/html" => Ok(res.text().await? + "\n"),
|
||||||
_ => Ok(format!("base64({})\n", BASE64_STANDARD.encode(res.bytes().await?))),
|
_ => Ok(format!("base64({})\n", BASE64_STANDARD.encode(res.bytes().await?))),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue