aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/http/ratelimiting.rs21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/http/ratelimiting.rs b/src/http/ratelimiting.rs
index 039f15d..c401b53 100644
--- a/src/http/ratelimiting.rs
+++ b/src/http/ratelimiting.rs
@@ -504,18 +504,11 @@ impl RateLimit {
}
fn parse_header(headers: &Headers, header: &str) -> Result<Option<i64>> {
- match headers.get_raw(header) {
- Some(header) => {
- match str::from_utf8(&header[0]) {
- Ok(v) => {
- match v.parse::<i64>() {
- Ok(v) => Ok(Some(v)),
- Err(_) => Err(Error::Http(HttpError::RateLimitI64)),
- }
- },
- Err(_) => Err(Error::Http(HttpError::RateLimitUtf8)),
- }
- },
- None => Ok(None),
- }
+ headers.get_raw(header).map_or(Ok(None), |header| {
+ str::from_utf8(&header[0])
+ .map_err(|_| Error::Http(HttpError::RateLimitUtf8))
+ .and_then(|v| {
+ v.parse::<i64>().map(|v| Some(v)).map_err(|_| Error::Http(HttpError::RateLimitI64))
+ })
+ })
}