Handle HTTP errors sensibly on GET
This commit is contained in:
@@ -50,9 +50,16 @@ impl async_tftp::server::Handler for Handler {
|
||||
match resource {
|
||||
Resource::Http(url) => {
|
||||
// TODO: Add headers describing client
|
||||
let req = self.http.get(url).send().await.map_err(|err| Error::Msg(err.to_string()))?;
|
||||
let size = req.content_length();
|
||||
let stream = req.bytes_stream()
|
||||
let resp = self.http.get(url).send().await.map_err(|err| Error::Msg(err.to_string()))?;
|
||||
match resp.status() {
|
||||
StatusCode::OK => {},
|
||||
StatusCode::NOT_FOUND => return Err(Error::FileNotFound),
|
||||
StatusCode::UNAUTHORIZED => return Err(Error::PermissionDenied),
|
||||
x => return Err(Error::Msg(x.to_string()))
|
||||
}
|
||||
|
||||
let size = resp.content_length();
|
||||
let stream = resp.bytes_stream()
|
||||
.map_err(|e| futures::io::Error::new(futures::io::ErrorKind::Other, e))
|
||||
.into_async_read();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user