Skip to content

Commit 4ec4d10

Browse files
committed
Simplify uploader error handling
1 parent 2716ff6 commit 4ec4d10

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

src/uploaders.rs

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ use openssl::hash::{Hasher, MessageDigest};
55
use reqwest::header;
66

77
use crate::util::errors::{cargo_err, internal, AppResult, ChainError};
8-
use crate::util::{LimitErrorReader, Maximums};
8+
use crate::util::{Error, LimitErrorReader, Maximums};
99

1010
use std::env;
11-
use std::error::Error;
1211
use std::fs::{self, File};
1312
use std::io::{Cursor, Read};
1413
use std::sync::Arc;
@@ -103,27 +102,25 @@ impl Uploader {
103102
content_length: u64,
104103
content_type: &str,
105104
extra_headers: header::HeaderMap,
106-
) -> Result<Option<String>, Box<dyn Error>> {
105+
) -> Result<Option<String>, Error> {
107106
match *self {
108107
Uploader::S3 { ref bucket, .. } => {
109-
bucket
110-
.put(
111-
client,
112-
path,
113-
content,
114-
content_length,
115-
content_type,
116-
extra_headers,
117-
)
118-
.map_err(Box::new)?;
108+
bucket.put(
109+
client,
110+
path,
111+
content,
112+
content_length,
113+
content_type,
114+
extra_headers,
115+
)?;
119116
Ok(Some(String::from(path)))
120117
}
121118
Uploader::Local => {
122119
let filename = env::current_dir().unwrap().join("local_uploads").join(path);
123120
let dir = filename.parent().unwrap();
124-
fs::create_dir_all(dir).map_err(Box::new)?;
125-
let mut file = File::create(&filename).map_err(Box::new)?;
126-
std::io::copy(&mut content, &mut file).map_err(Box::new)?;
121+
fs::create_dir_all(dir)?;
122+
let mut file = File::create(&filename)?;
123+
std::io::copy(&mut content, &mut file)?;
127124
Ok(filename.to_str().map(String::from))
128125
}
129126
}
@@ -165,7 +162,7 @@ impl Uploader {
165162
crate_name: &str,
166163
vers: &str,
167164
readme: String,
168-
) -> Result<(), Box<dyn Error>> {
165+
) -> Result<(), Error> {
169166
let path = Uploader::readme_path(crate_name, vers);
170167
let content_length = readme.len() as u64;
171168
let content = Cursor::new(readme);

src/util/errors/concrete.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
use std::{error, fmt};
1+
use std::{error, fmt, io};
22

33
#[derive(Debug)]
44
pub enum Error {
55
DbConnect(diesel::result::ConnectionError),
66
DbQuery(diesel::result::Error),
77
DotEnv(dotenv::Error),
88
Internal(String),
9+
Io(io::Error),
910
JobEnqueue(swirl::EnqueueError),
1011
Reqwest(reqwest::Error),
1112
}
@@ -19,6 +20,7 @@ impl fmt::Display for Error {
1920
Error::DbQuery(inner) => inner.fmt(f),
2021
Error::DotEnv(inner) => inner.fmt(f),
2122
Error::Internal(inner) => inner.fmt(f),
23+
Error::Io(inner) => inner.fmt(f),
2224
Error::JobEnqueue(inner) => inner.fmt(f),
2325
Error::Reqwest(inner) => inner.fmt(f),
2426
}
@@ -49,6 +51,12 @@ impl From<String> for Error {
4951
}
5052
}
5153

54+
impl From<io::Error> for Error {
55+
fn from(err: io::Error) -> Self {
56+
Error::Io(err)
57+
}
58+
}
59+
5260
impl From<swirl::EnqueueError> for Error {
5361
fn from(err: swirl::EnqueueError) -> Self {
5462
Error::JobEnqueue(err)

0 commit comments

Comments
 (0)