Skip to content

Commit

Permalink
fix(ffi): clear stored etag on http req failure (#594)
Browse files Browse the repository at this point in the history
Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
  • Loading branch information
markphelps authored Dec 18, 2024
1 parent 22264f0 commit 2db0a2e
Showing 1 changed file with 27 additions and 19 deletions.
46 changes: 27 additions & 19 deletions flipt-engine-ffi/src/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,33 +249,40 @@ impl HTTPFetcher {
}
};

let response = self
match self
.http_client
.get(url)
.headers(self.build_headers())
.send()
.await
.map_err(|e| Error::Server(format!("failed to make request: {}", e)))?
.error_for_status()
.map_err(|e| Error::Server(format!("response: {}", e)))?;

match response.status() {
reqwest::StatusCode::NOT_MODIFIED => Ok(None),
{
Ok(response) => match response.error_for_status() {
Ok(response) => match response.status() {
reqwest::StatusCode::NOT_MODIFIED => Ok(None),
reqwest::StatusCode::OK => {
if let Some(etag) = response.headers().get(reqwest::header::ETAG) {
self.etag = Some(etag.to_str().unwrap().to_string());
}

reqwest::StatusCode::OK => {
// check if we have a new etag
if let Some(etag) = response.headers().get(reqwest::header::ETAG) {
self.etag = Some(etag.to_str().unwrap().to_string());
Ok(Some(response))
}
_ => {
self.etag = None;
Err(Error::Server(format!(
"unexpected http response: {}",
response.status()
)))
}
},
Err(e) => {
self.etag = None;
Err(Error::Server(format!("response: {}", e)))
}

Ok(Some(response))
},
Err(e) => {
self.etag = None;
Err(Error::Server(format!("failed to make request: {}", e)))
}

_ => Err(Error::Server(format!(
"unexpected http response: {} {}",
response.status(),
response.text().await.unwrap_or("".to_string())
))),
}
}

Expand Down Expand Up @@ -499,6 +506,7 @@ mod tests {
let result = fetcher.fetch().await;

assert!(result.is_err());
assert_eq!(fetcher.etag, None);
mock.assert();
}

Expand Down

0 comments on commit 2db0a2e

Please sign in to comment.