mirror of
https://github.com/actix/actix-web.git
synced 2024-11-20 08:31:09 +00:00
use released versions of actix-net
This commit is contained in:
parent
068f047dd5
commit
14075ebf7f
19 changed files with 128 additions and 126 deletions
49
Cargo.toml
49
Cargo.toml
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "actix-web"
|
||||
version = "2.0.0-alpha.1"
|
||||
version = "2.0.0-alpha.2"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Actix web is a simple, pragmatic and extremely fast web framework for Rust."
|
||||
readme = "README.md"
|
||||
|
@ -69,19 +69,18 @@ openssl = ["open-ssl", "actix-tls/openssl", "awc/openssl"]
|
|||
# rustls = ["rust-tls", "actix-server/rustls", "awc/rustls"]
|
||||
|
||||
[dependencies]
|
||||
actix-codec = "0.2.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-codec = "0.2.0-alpha.2"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
actix-router = "0.1.5"
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-web-codegen = "0.2.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-server = "0.8.0-alpha.2"
|
||||
actix-testing = "0.3.0-alpha.1"
|
||||
actix-threadpool = "0.2.0-alpha.1"
|
||||
#actix-tls = "0.1.0-alpha.1"
|
||||
actix-tls = { git = "https://github.com/actix/actix-net.git", optional = true }
|
||||
awc = { version = "0.3.0-alpha.1", optional = true }
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-web-codegen = "0.2.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
||||
actix-server = "1.0.0-alpha.2"
|
||||
actix-testing = "1.0.0-alpha.2"
|
||||
actix-threadpool = "0.3.0"
|
||||
actix-tls = { version = "1.0.0-alpha.1", optional = true }
|
||||
awc = { version = "0.3.0-alpha.2", optional = true }
|
||||
|
||||
bytes = "0.4"
|
||||
derive_more = "0.99.2"
|
||||
|
@ -92,7 +91,7 @@ log = "0.4"
|
|||
mime = "0.3"
|
||||
net2 = "0.2.33"
|
||||
parking_lot = "0.9"
|
||||
pin-project = "0.4.5"
|
||||
pin-project = "0.4.6"
|
||||
regex = "1.0"
|
||||
serde = { version = "1.0", features=["derive"] }
|
||||
serde_json = "1.0"
|
||||
|
@ -106,8 +105,8 @@ open-ssl = { version="0.10", package="openssl", optional = true }
|
|||
|
||||
[dev-dependencies]
|
||||
# actix = "0.8.3"
|
||||
actix-connect = "0.3.0-alpha.1"
|
||||
actix-http-test = "0.3.0-alpha.1"
|
||||
actix-connect = "1.0.0-alpha.2"
|
||||
actix-http-test = "0.3.0-alpha.2"
|
||||
rand = "0.7"
|
||||
env_logger = "0.6"
|
||||
serde_derive = "1.0"
|
||||
|
@ -131,12 +130,12 @@ actix-files = { path = "actix-files" }
|
|||
actix-multipart = { path = "actix-multipart" }
|
||||
awc = { path = "awc" }
|
||||
|
||||
actix-codec = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-connect = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-rt = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-macros = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-server = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-service = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-testing = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-tls = { git = "https://github.com/actix/actix-net.git" }
|
||||
actix-utils = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-codec = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-connect = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-rt = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-macros = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-server = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-service = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-testing = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-tls = { git = "https://github.com/actix/actix-net.git" }
|
||||
# actix-utils = { git = "https://github.com/actix/actix-net.git" }
|
||||
|
|
|
@ -18,9 +18,9 @@ path = "src/lib.rs"
|
|||
|
||||
[dependencies]
|
||||
actix-web = "2.0.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
derive_more = "0.99.2"
|
||||
futures = "0.3.1"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
|
|
|
@ -20,7 +20,7 @@ path = "src/lib.rs"
|
|||
[dependencies]
|
||||
actix-web = { version = "2.0.0-alpha.1", default-features = false }
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
bitflags = "1"
|
||||
bytes = "0.4"
|
||||
futures = "0.3.1"
|
||||
|
@ -32,5 +32,5 @@ percent-encoding = "2.1"
|
|||
v_htmlescape = "0.4"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-web = { version = "2.0.0-alpha.1", features=["openssl"] }
|
||||
|
|
|
@ -18,7 +18,7 @@ use actix_web::dev::{
|
|||
AppService, HttpServiceFactory, Payload, ResourceDef, ServiceRequest,
|
||||
ServiceResponse,
|
||||
};
|
||||
use actix_web::error::{Canceled, Error, ErrorInternalServerError};
|
||||
use actix_web::error::{BlockingError, Error, ErrorInternalServerError};
|
||||
use actix_web::guard::Guard;
|
||||
use actix_web::http::header::{self, DispositionType};
|
||||
use actix_web::http::Method;
|
||||
|
@ -50,6 +50,12 @@ pub fn file_extension_to_mime(ext: &str) -> mime::Mime {
|
|||
from_ext(ext).first_or_octet_stream()
|
||||
}
|
||||
|
||||
fn handle_error(err: BlockingError<io::Error>) -> Error {
|
||||
match err {
|
||||
BlockingError::Error(err) => err.into(),
|
||||
BlockingError::Canceled => ErrorInternalServerError("Unexpected error"),
|
||||
}
|
||||
}
|
||||
#[doc(hidden)]
|
||||
/// A helper created from a `std::fs::File` which reads the file
|
||||
/// chunk-by-chunk on a `ThreadPool`.
|
||||
|
@ -57,9 +63,8 @@ pub struct ChunkedReadFile {
|
|||
size: u64,
|
||||
offset: u64,
|
||||
file: Option<File>,
|
||||
fut: Option<
|
||||
LocalBoxFuture<'static, Result<Result<(File, Bytes), io::Error>, Canceled>>,
|
||||
>,
|
||||
fut:
|
||||
Option<LocalBoxFuture<'static, Result<(File, Bytes), BlockingError<io::Error>>>>,
|
||||
counter: u64,
|
||||
}
|
||||
|
||||
|
@ -72,18 +77,14 @@ impl Stream for ChunkedReadFile {
|
|||
) -> Poll<Option<Self::Item>> {
|
||||
if let Some(ref mut fut) = self.fut {
|
||||
return match Pin::new(fut).poll(cx) {
|
||||
Poll::Ready(Err(_)) => Poll::Ready(Some(Err(ErrorInternalServerError(
|
||||
"Unexpected error",
|
||||
)
|
||||
.into()))),
|
||||
Poll::Ready(Ok(Ok((file, bytes)))) => {
|
||||
Poll::Ready(Ok((file, bytes))) => {
|
||||
self.fut.take();
|
||||
self.file = Some(file);
|
||||
self.offset += bytes.len() as u64;
|
||||
self.counter += bytes.len() as u64;
|
||||
Poll::Ready(Some(Ok(bytes)))
|
||||
}
|
||||
Poll::Ready(Ok(Err(e))) => Poll::Ready(Some(Err(e.into()))),
|
||||
Poll::Ready(Err(e)) => Poll::Ready(Some(Err(handle_error(e)))),
|
||||
Poll::Pending => Poll::Pending,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -20,11 +20,11 @@ name = "actix_framed"
|
|||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
actix-codec = "0.2.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-codec = "0.2.0-alpha.2"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-router = "0.1.2"
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
||||
|
||||
bytes = "0.4"
|
||||
futures = "0.3.1"
|
||||
|
@ -32,7 +32,7 @@ pin-project = "0.4.6"
|
|||
log = "0.4"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-server = { version = "0.8.0-alpha.1" }
|
||||
actix-connect = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-server = { version = "1.0.0-alpha.2" }
|
||||
actix-connect = { version = "1.0.0-alpha.2", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "actix-http"
|
||||
version = "0.3.0-alpha.1"
|
||||
version = "0.3.0-alpha.2"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Actix http primitives"
|
||||
readme = "README.md"
|
||||
|
@ -47,15 +47,15 @@ fail = ["failure"]
|
|||
secure-cookies = ["ring"]
|
||||
|
||||
[dependencies]
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-codec = "0.2.0-alpha.1"
|
||||
actix-connect = "1.0.0-alpha.1"
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-threadpool = "0.2.0-alpha.1"
|
||||
actix-tls = { git = "https://github.com/actix/actix-net.git", optional = true }
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-codec = "0.2.0-alpha.2"
|
||||
actix-connect = "1.0.0-alpha.2"
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-threadpool = "0.3.0"
|
||||
actix-tls = { version = "1.0.0-alpha.1", optional = true }
|
||||
|
||||
base64 = "0.10"
|
||||
base64 = "0.11"
|
||||
bitflags = "1.0"
|
||||
bytes = "0.4"
|
||||
copyless = "0.1.4"
|
||||
|
@ -74,7 +74,7 @@ language-tags = "0.2"
|
|||
log = "0.4"
|
||||
mime = "0.3"
|
||||
percent-encoding = "2.1"
|
||||
pin-project = "0.4.5"
|
||||
pin-project = "0.4.6"
|
||||
rand = "0.7"
|
||||
regex = "1.0"
|
||||
serde = "1.0"
|
||||
|
@ -83,8 +83,6 @@ sha1 = "0.6"
|
|||
slab = "0.4"
|
||||
serde_urlencoded = "0.6.1"
|
||||
time = "0.1.42"
|
||||
|
||||
tokio-net = "=0.2.0-alpha.6"
|
||||
trust-dns-resolver = { version="0.18.0-alpha.1", default-features = false }
|
||||
|
||||
# for secure cookie
|
||||
|
@ -103,11 +101,10 @@ tokio-openssl = { version = "0.4.0-alpha.6", optional = true }
|
|||
# webpki-roots = { version = "0.18", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
actix-server = { version = "0.8.0-alpha.1" }
|
||||
actix-connect = { version = "1.0.0-alpha.1", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
#actix-tls = { version = "0.1.0-alpha.1", features=["openssl"] }
|
||||
actix-tls = { git = "https://github.com/actix/actix-net.git", features=["openssl"] }
|
||||
actix-server = { version = "1.0.0-alpha.2" }
|
||||
actix-connect = { version = "1.0.0-alpha.2", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
actix-tls = { version = "1.0.0-alpha.1", features=["openssl"] }
|
||||
env_logger = "0.6"
|
||||
serde_derive = "1.0"
|
||||
open-ssl = { version="0.10", package="openssl" }
|
||||
|
|
|
@ -6,10 +6,10 @@ use actix_codec::{AsyncRead, AsyncWrite};
|
|||
use actix_connect::{
|
||||
default_connector, Connect as TcpConnect, Connection as TcpConnection,
|
||||
};
|
||||
use actix_rt::net::TcpStream;
|
||||
use actix_service::{apply_fn, Service};
|
||||
use actix_utils::timeout::{TimeoutError, TimeoutService};
|
||||
use http::Uri;
|
||||
use tokio_net::tcp::TcpStream;
|
||||
|
||||
use super::connection::Connection;
|
||||
use super::error::ConnectError;
|
||||
|
|
|
@ -21,7 +21,7 @@ pub struct Decoder<S> {
|
|||
decoder: Option<ContentDecoder>,
|
||||
stream: S,
|
||||
eof: bool,
|
||||
fut: Option<CpuFuture<Result<(Option<Bytes>, ContentDecoder), io::Error>>>,
|
||||
fut: Option<CpuFuture<(Option<Bytes>, ContentDecoder), io::Error>>,
|
||||
}
|
||||
|
||||
impl<S> Decoder<S>
|
||||
|
@ -85,8 +85,7 @@ where
|
|||
loop {
|
||||
if let Some(ref mut fut) = self.fut {
|
||||
let (chunk, decoder) = match ready!(Pin::new(fut).poll(cx)) {
|
||||
Ok(Ok(item)) => item,
|
||||
Ok(Err(e)) => return Poll::Ready(Some(Err(e.into()))),
|
||||
Ok(item) => item,
|
||||
Err(e) => return Poll::Ready(Some(Err(e.into()))),
|
||||
};
|
||||
self.decoder = Some(decoder);
|
||||
|
|
|
@ -24,7 +24,7 @@ pub struct Encoder<B> {
|
|||
eof: bool,
|
||||
body: EncoderBody<B>,
|
||||
encoder: Option<ContentEncoder>,
|
||||
fut: Option<CpuFuture<Result<ContentEncoder, io::Error>>>,
|
||||
fut: Option<CpuFuture<ContentEncoder, io::Error>>,
|
||||
}
|
||||
|
||||
impl<B: MessageBody> Encoder<B> {
|
||||
|
@ -104,8 +104,7 @@ impl<B: MessageBody> MessageBody for Encoder<B> {
|
|||
|
||||
if let Some(ref mut fut) = self.fut {
|
||||
let mut encoder = match futures::ready!(Pin::new(fut).poll(cx)) {
|
||||
Ok(Ok(item)) => item,
|
||||
Ok(Err(e)) => return Poll::Ready(Some(Err(e.into()))),
|
||||
Ok(item) => item,
|
||||
Err(e) => return Poll::Ready(Some(Err(e.into()))),
|
||||
};
|
||||
let chunk = encoder.take();
|
||||
|
|
|
@ -6,6 +6,7 @@ use std::str::Utf8Error;
|
|||
use std::string::FromUtf8Error;
|
||||
use std::{fmt, io, result};
|
||||
|
||||
pub use actix_threadpool::BlockingError;
|
||||
use actix_utils::timeout::TimeoutError;
|
||||
use bytes::BytesMut;
|
||||
use derive_more::{Display, From};
|
||||
|
@ -197,6 +198,9 @@ impl ResponseError for DeError {
|
|||
/// `InternalServerError` for `Canceled`
|
||||
impl ResponseError for Canceled {}
|
||||
|
||||
/// `InternalServerError` for `BlockingError`
|
||||
impl<E: fmt::Debug> ResponseError for BlockingError<E> {}
|
||||
|
||||
/// Return `BAD_REQUEST` for `Utf8Error`
|
||||
impl ResponseError for Utf8Error {
|
||||
fn status_code(&self) -> StatusCode {
|
||||
|
@ -359,12 +363,15 @@ impl From<io::Error> for PayloadError {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<Canceled> for PayloadError {
|
||||
fn from(_: Canceled) -> Self {
|
||||
PayloadError::Io(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
"Operation is canceled",
|
||||
))
|
||||
impl From<BlockingError<io::Error>> for PayloadError {
|
||||
fn from(err: BlockingError<io::Error>) -> Self {
|
||||
match err {
|
||||
BlockingError::Error(e) => PayloadError::Io(e),
|
||||
BlockingError::Canceled => PayloadError::Io(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
"Operation is canceled",
|
||||
)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,14 +17,14 @@ name = "actix_identity"
|
|||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
actix-web = { version = "2.0.0-alpha.1", default-features = false, features = ["secure-cookies"] }
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-web = { version = "2.0.0-alpha.2", default-features = false, features = ["secure-cookies"] }
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
futures = "0.3.1"
|
||||
serde = "1.0"
|
||||
serde_json = "1.0"
|
||||
time = "0.1.42"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
||||
bytes = "0.4"
|
|
@ -18,9 +18,9 @@ name = "actix_multipart"
|
|||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
actix-web = { version = "2.0.0-alpha.1", default-features = false }
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-web = { version = "2.0.0-alpha.2", default-features = false }
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
bytes = "0.4"
|
||||
derive_more = "0.99.2"
|
||||
httparse = "1.3"
|
||||
|
@ -31,5 +31,5 @@ time = "0.1"
|
|||
twoway = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "actix-session"
|
||||
version = "0.3.0-alpha.1"
|
||||
version = "0.3.0-alpha.2"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Session for actix web framework."
|
||||
readme = "README.md"
|
||||
|
@ -24,8 +24,8 @@ default = ["cookie-session"]
|
|||
cookie-session = ["actix-web/secure-cookies"]
|
||||
|
||||
[dependencies]
|
||||
actix-web = "2.0.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-web = "2.0.0-alpha.2"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
bytes = "0.4"
|
||||
derive_more = "0.99.2"
|
||||
futures = "0.3.1"
|
||||
|
@ -35,4 +35,4 @@ serde_json = "1.0"
|
|||
time = "0.1.42"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "actix-web-codegen"
|
||||
version = "0.2.0-alpha.1"
|
||||
version = "0.2.0-alpha.2"
|
||||
description = "Actix web proc macros"
|
||||
readme = "README.md"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
|
@ -17,8 +17,8 @@ syn = { version = "^1", features = ["full", "parsing"] }
|
|||
proc-macro2 = "^1"
|
||||
|
||||
[dev-dependencies]
|
||||
actix-rt = { version = "1.0.0-alpha.1" }
|
||||
actix-web = { version = "2.0.0-alpha.1" }
|
||||
actix-http = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-rt = { version = "1.0.0-alpha.2" }
|
||||
actix-web = { version = "2.0.0-alpha.2" }
|
||||
actix-http = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
futures = { version = "0.3.1" }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "awc"
|
||||
version = "0.3.0-alpha.1"
|
||||
version = "0.3.0-alpha.2"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Actix http client."
|
||||
readme = "README.md"
|
||||
|
@ -42,10 +42,10 @@ flate2-zlib = ["actix-http/flate2-zlib"]
|
|||
flate2-rust = ["actix-http/flate2-rust"]
|
||||
|
||||
[dependencies]
|
||||
actix-codec = "0.2.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-codec = "0.2.0-alpha.2"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
|
||||
base64 = "0.10.1"
|
||||
bytes = "0.4"
|
||||
|
@ -62,12 +62,12 @@ open-ssl = { version="0.10", package="openssl", optional = true }
|
|||
# rust-tls = { version = "0.16.0", package="rustls", optional = true, features = ["dangerous_configuration"] }
|
||||
|
||||
[dev-dependencies]
|
||||
actix-connect = { version = "1.0.0-alpha.1", features=["openssl"] }
|
||||
actix-web = { version = "2.0.0-alpha.1", features=["openssl"] }
|
||||
actix-http = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-server = { version = "0.8.0-alpha.2" }
|
||||
actix-connect = { version = "1.0.0-alpha.2", features=["openssl"] }
|
||||
actix-web = { version = "2.0.0-alpha.2", features=["openssl"] }
|
||||
actix-http = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.2", features=["openssl"] }
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
actix-server = { version = "1.0.0-alpha.2" }
|
||||
#actix-tls = { version = "0.1.0-alpha.1", features=["openssl"] }
|
||||
brotli2 = { version="0.3.2" }
|
||||
flate2 = { version="1.0.2" }
|
||||
|
|
|
@ -667,7 +667,7 @@ mod tests {
|
|||
async fn async_with_block() -> Result<HttpResponse, Error> {
|
||||
let res = web::block(move || Some(4usize).ok_or("wrong")).await;
|
||||
|
||||
match res? {
|
||||
match res {
|
||||
Ok(value) => Ok(HttpResponse::Ok()
|
||||
.content_type("text/plain")
|
||||
.body(format!("Async with block value: {}", value))),
|
||||
|
|
10
src/web.rs
10
src/web.rs
|
@ -6,6 +6,7 @@ pub use actix_http::Response as HttpResponse;
|
|||
pub use bytes::{Bytes, BytesMut};
|
||||
pub use futures::channel::oneshot::Canceled;
|
||||
|
||||
use crate::error::BlockingError;
|
||||
use crate::extract::FromRequest;
|
||||
use crate::handler::Factory;
|
||||
use crate::resource::Resource;
|
||||
|
@ -274,10 +275,11 @@ pub fn service(path: &str) -> WebService {
|
|||
|
||||
/// Execute blocking function on a thread pool, returns future that resolves
|
||||
/// to result of the function execution.
|
||||
pub fn block<F, R>(f: F) -> impl Future<Output = Result<R, Canceled>>
|
||||
pub async fn block<F, I, E>(f: F) -> Result<I, BlockingError<E>>
|
||||
where
|
||||
F: FnOnce() -> R + Send + 'static,
|
||||
R: Send + 'static,
|
||||
F: FnOnce() -> Result<I, E> + Send + 'static,
|
||||
I: Send + 'static,
|
||||
E: Send + std::fmt::Debug + 'static,
|
||||
{
|
||||
actix_threadpool::run(f)
|
||||
actix_threadpool::run(f).await
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "actix-http-test"
|
||||
version = "0.3.0-alpha.1"
|
||||
version = "0.3.0-alpha.2"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Actix http test server"
|
||||
readme = "README.md"
|
||||
|
@ -30,16 +30,16 @@ default = []
|
|||
openssl = ["open-ssl", "awc/openssl", ] # "actix-tls/openssl"]
|
||||
|
||||
[dependencies]
|
||||
actix-service = "1.0.0-alpha.1"
|
||||
actix-codec = "0.2.0-alpha.1"
|
||||
actix-connect = "1.0.0-alpha.1"
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-server = "0.8.0-alpha.1"
|
||||
actix-testing = "0.3.0-alpha.1"
|
||||
awc = "0.3.0-alpha.1"
|
||||
actix-service = "1.0.0-alpha.2"
|
||||
actix-codec = "0.2.0-alpha.2"
|
||||
actix-connect = "1.0.0-alpha.2"
|
||||
actix-utils = "1.0.0-alpha.2"
|
||||
actix-rt = "1.0.0-alpha.2"
|
||||
actix-server = "1.0.0-alpha.2"
|
||||
actix-testing = "1.0.0-alpha.2"
|
||||
awc = "0.3.0-alpha.2"
|
||||
|
||||
base64 = "0.10"
|
||||
base64 = "0.11"
|
||||
bytes = "0.4"
|
||||
futures = "0.3.1"
|
||||
http = "0.1.8"
|
||||
|
@ -52,9 +52,8 @@ sha1 = "0.6"
|
|||
slab = "0.4"
|
||||
serde_urlencoded = "0.6.1"
|
||||
time = "0.1"
|
||||
tokio-net = "0.2.0-alpha.6"
|
||||
open-ssl = { version="0.10", package="openssl", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
actix-web = "2.0.0-alpha.1"
|
||||
actix-http = "0.3.0-alpha.1"
|
||||
actix-web = "2.0.0-alpha.2"
|
||||
actix-http = "0.3.0-alpha.2"
|
||||
|
|
|
@ -3,14 +3,13 @@ use std::sync::mpsc;
|
|||
use std::{net, thread, time};
|
||||
|
||||
use actix_codec::{AsyncRead, AsyncWrite, Framed};
|
||||
use actix_rt::System;
|
||||
use actix_rt::{net::TcpStream, System};
|
||||
use actix_server::{Server, ServiceFactory};
|
||||
use awc::{error::PayloadError, ws, Client, ClientRequest, ClientResponse, Connector};
|
||||
use bytes::Bytes;
|
||||
use futures::Stream;
|
||||
use http::Method;
|
||||
use net2::TcpBuilder;
|
||||
use tokio_net::tcp::TcpStream;
|
||||
|
||||
pub use actix_testing::*;
|
||||
|
||||
|
|
Loading…
Reference in a new issue