1
0
Fork 0
mirror of https://codeberg.org/icewind/shelve.git synced 2026-06-03 20:14:08 +02:00
This commit is contained in:
Robin Appelman 2020-01-25 23:07:50 +01:00
commit 1b60e617db

View file

@ -3,8 +3,7 @@ use std::io::{Cursor, Read, Write};
use std::path::Path; use std::path::Path;
use rocket::data::{self, FromDataSimple}; use rocket::data::{self, FromDataSimple};
use rocket::http::Status; use rocket::{Data, Outcome, Request};
use rocket::{Data, Outcome, Outcome::*, Request};
use multipart::server::Multipart; use multipart::server::Multipart;
@ -62,8 +61,6 @@ impl<'t> FromDataSimple for MultipartDatas {
let mut buffer = [0u8; 4096]; let mut buffer = [0u8; 4096];
let mut err_out: Option<Outcome<_, (Status, _), _>> = None;
mp.foreach_entry(|entry| { mp.foreach_entry(|entry| {
let mut data = entry.data; let mut data = entry.data;
if entry.headers.filename == None { if entry.headers.filename == None {
@ -72,7 +69,7 @@ impl<'t> FromDataSimple for MultipartDatas {
loop { loop {
let c = match data.read(&mut buffer) { let c = match data.read(&mut buffer) {
Ok(c) => c, Ok(c) => c,
Err(err) => { Err(_err) => {
return; return;
} }
}; };
@ -104,7 +101,7 @@ impl<'t> FromDataSimple for MultipartDatas {
let mut file = match File::create(&target_path) { let mut file = match File::create(&target_path) {
Ok(f) => f, Ok(f) => f,
Err(err) => { Err(_err) => {
return; return;
} }
}; };
@ -114,7 +111,7 @@ impl<'t> FromDataSimple for MultipartDatas {
loop { loop {
let c = match data.read(&mut buffer) { let c = match data.read(&mut buffer) {
Ok(c) => c, Ok(c) => c,
Err(err) => { Err(_err) => {
try_delete(&target_path); try_delete(&target_path);
return; return;
} }
@ -128,7 +125,7 @@ impl<'t> FromDataSimple for MultipartDatas {
match file.write(&buffer[..c]) { match file.write(&buffer[..c]) {
Ok(_) => (), Ok(_) => (),
Err(err) => { Err(_err) => {
try_delete(&target_path); try_delete(&target_path);
return; return;
} }
@ -143,15 +140,8 @@ impl<'t> FromDataSimple for MultipartDatas {
} }
}) })
.unwrap(); .unwrap();
if let Some(failed) = err_out {
return failed; Outcome::Success(MultipartDatas { texts, files })
} else {
let v = MultipartDatas {
texts: texts,
files: files,
};
return Outcome::Success(v);
}
} }
} }