1
0
mirror of https://github.com/actix/examples synced 2024-11-28 00:12:57 +01:00

update to beta.1

This commit is contained in:
Nikolay Kim 2019-04-21 09:36:31 -07:00
parent 0faa540b8d
commit 52811611d0
4 changed files with 24 additions and 11 deletions

View File

@ -7,7 +7,7 @@ workspace = ".."
[dependencies] [dependencies]
actix-rt = "0.2.2" actix-rt = "0.2.2"
actix-web = { version="1.0.0-alpha.4", features=["ssl"] } actix-web = { version="1.0.0-beta.1", features=["ssl"] }
actix-multipart = { git="https://github.com/actix/actix-web.git" } actix-multipart = { git="https://github.com/actix/actix-web.git" }
bytes = "0.4.12" bytes = "0.4.12"
env_logger = "0.6.1" env_logger = "0.6.1"

View File

@ -2,7 +2,7 @@ use actix_web::{error, web};
use crate::handlers::{parts, products}; use crate::handlers::{parts, products};
pub fn config_app(cfg: &mut web::RouterConfig) { pub fn config_app(cfg: &mut web::ServiceConfig) {
// domain includes: /products/{product_id}/parts/{part_id} // domain includes: /products/{product_id}/parts/{part_id}
cfg.service( cfg.service(
web::scope("/products") web::scope("/products")

View File

@ -13,20 +13,33 @@ pub struct AppState {
pub fn save_file(field: Field) -> impl Future<Item = i64, Error = Error> { pub fn save_file(field: Field) -> impl Future<Item = i64, Error = Error> {
let file_path_string = "upload.png"; let file_path_string = "upload.png";
let mut file = match fs::File::create(file_path_string) { let file = match fs::File::create(file_path_string) {
Ok(file) => file, Ok(file) => file,
Err(e) => return Either::A(err(error::ErrorInternalServerError(e))), Err(e) => return Either::A(err(error::ErrorInternalServerError(e))),
}; };
Either::B( Either::B(
field field
.fold(0i64, move |acc, bytes| { .fold((file, 0i64), move |(mut file, mut acc), bytes| {
file.write_all(bytes.as_ref()) // fs operations are blocking, we have to execute writes
// on threadpool
web::block(move || {
acc += file
.write_all(bytes.as_ref())
.map(|_| acc + bytes.len() as i64) .map(|_| acc + bytes.len() as i64)
.map_err(|e| { .map_err(|e| {
println!("file.write_all failed: {:?}", e); println!("file.write_all failed: {:?}", e);
MultipartError::Payload(error::PayloadError::Io(e)) MultipartError::Payload(error::PayloadError::Io(e))
})?;
Ok((file, acc))
})
.map_err(|e: error::BlockingError<MultipartError>| {
match e {
error::BlockingError::Error(e) => e,
error::BlockingError::Canceled => MultipartError::Incomplete,
}
}) })
}) })
.map(|(_, acc)| acc)
.map_err(|e| { .map_err(|e| {
println!("save_file failed, {:?}", e); println!("save_file failed, {:?}", e);
error::ErrorInternalServerError(e) error::ErrorInternalServerError(e)