Input: Add HTTP Status Code Checks (#190)
`HttpRequest`s will now return an `AudioStreamError::Fail` on receipt of a non-2xx status code from a server. This has the advantage of making it clearer *why* a failure occurred rather than leaving users to piece the truth together from a Symphonia parsing error. Closes #184.
This commit is contained in:
committed by
Kyle Simpson
parent
9fa063ff0e
commit
c976d50cc5
@@ -13,6 +13,7 @@ use reqwest::{
|
||||
header::{HeaderMap, ACCEPT_RANGES, CONTENT_LENGTH, CONTENT_TYPE, RANGE, RETRY_AFTER},
|
||||
Client,
|
||||
};
|
||||
use std::fmt::format;
|
||||
use std::{
|
||||
io::{Error as IoError, ErrorKind as IoErrorKind, Result as IoResult, SeekFrom},
|
||||
pin::Pin,
|
||||
@@ -82,6 +83,12 @@ impl HttpRequest {
|
||||
.await
|
||||
.map_err(|e| AudioStreamError::Fail(Box::new(e)))?;
|
||||
|
||||
if !resp.status().is_success() {
|
||||
let msg: Box<dyn std::error::Error + Send + Sync + 'static> =
|
||||
format!("failed with http status code: {}", resp.status()).into();
|
||||
return Err(AudioStreamError::Fail(msg));
|
||||
}
|
||||
|
||||
if let Some(t) = resp.headers().get(RETRY_AFTER) {
|
||||
t.to_str()
|
||||
.map_err(|_| {
|
||||
|
||||
Reference in New Issue
Block a user