mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-27 09:42:57 +01:00
re-export ServiceFactory (#2325)
This commit is contained in:
parent
5a14ffeef2
commit
293c52c3ef
@ -1,6 +1,10 @@
|
||||
# Changes
|
||||
|
||||
## Unreleased - 2021-xx-xx
|
||||
### Added
|
||||
* Re-export actix-service `ServiceFactory` in `dev` module. [#2325]
|
||||
|
||||
[#2325]: https://github.com/actix/actix-web/pull/2325
|
||||
|
||||
|
||||
## 4.0.0-beta.8 - 2021-06-26
|
||||
|
@ -15,7 +15,7 @@ use crate::{
|
||||
HttpMessage,
|
||||
};
|
||||
|
||||
/// Request
|
||||
/// An HTTP request.
|
||||
pub struct Request<P = PayloadStream> {
|
||||
pub(crate) payload: Payload<P>,
|
||||
pub(crate) head: Message<RequestHead>,
|
||||
|
25
src/dev.rs
25
src/dev.rs
@ -1,13 +1,7 @@
|
||||
//! Lower level `actix-web` types.
|
||||
//! Lower-level types and re-exports.
|
||||
//!
|
||||
//! Most users will not have to interact with the types in this module,
|
||||
//! but it is useful as a glob import for those writing middleware, developing libraries,
|
||||
//! or interacting with the service API directly:
|
||||
//!
|
||||
//! ```
|
||||
//! # #![allow(unused_imports)]
|
||||
//! use actix_web::dev::*;
|
||||
//! ```
|
||||
//! Most users will not have to interact with the types in this module, but it is useful for those
|
||||
//! writing extractors, middleware and libraries, or interacting with the service API directly.
|
||||
|
||||
pub use crate::config::{AppConfig, AppService};
|
||||
#[doc(hidden)]
|
||||
@ -24,26 +18,25 @@ pub use actix_http::body::{AnyBody, Body, BodySize, MessageBody, ResponseBody, S
|
||||
|
||||
#[cfg(feature = "__compress")]
|
||||
pub use actix_http::encoding::Decoder as Decompress;
|
||||
pub use actix_http::ResponseBuilder as BaseHttpResponseBuilder;
|
||||
pub use actix_http::{Extensions, Payload, PayloadStream, RequestHead, ResponseHead};
|
||||
pub use actix_router::{Path, ResourceDef, ResourcePath, Url};
|
||||
pub use actix_server::Server;
|
||||
pub use actix_service::{
|
||||
always_ready, fn_factory, fn_service, forward_ready, Service, Transform,
|
||||
always_ready, fn_factory, fn_service, forward_ready, Service, ServiceFactory, Transform,
|
||||
};
|
||||
|
||||
pub(crate) fn insert_slash(mut patterns: Vec<String>) -> Vec<String> {
|
||||
use crate::http::header::ContentEncoding;
|
||||
use actix_http::{Response, ResponseBuilder};
|
||||
|
||||
pub(crate) fn insert_leading_slash(mut patterns: Vec<String>) -> Vec<String> {
|
||||
for path in &mut patterns {
|
||||
if !path.is_empty() && !path.starts_with('/') {
|
||||
path.insert(0, '/');
|
||||
};
|
||||
}
|
||||
|
||||
patterns
|
||||
}
|
||||
|
||||
use crate::http::header::ContentEncoding;
|
||||
use actix_http::{Response, ResponseBuilder};
|
||||
|
||||
struct Enc(ContentEncoding);
|
||||
|
||||
/// Helper trait that allows to set specific encoding for response.
|
||||
|
@ -23,10 +23,10 @@ use crate::{
|
||||
#[cfg(feature = "cookies")]
|
||||
struct Cookies(Vec<Cookie<'static>>);
|
||||
|
||||
/// An incoming request.
|
||||
#[derive(Clone)]
|
||||
/// An HTTP Request
|
||||
pub struct HttpRequest {
|
||||
/// # Panics
|
||||
/// # Invariant
|
||||
/// `Rc<HttpRequestInner>` is used exclusively and NO `Weak<HttpRequestInner>`
|
||||
/// is allowed anywhere in the code. Weak pointer is purposely ignored when
|
||||
/// doing `Rc`'s ref counter check. Expect panics if this invariant is violated.
|
||||
|
@ -15,7 +15,7 @@ use futures_util::future::join_all;
|
||||
|
||||
use crate::{
|
||||
data::Data,
|
||||
dev::{insert_slash, AppService, HttpServiceFactory, ResourceDef},
|
||||
dev::{insert_leading_slash, AppService, HttpServiceFactory, ResourceDef},
|
||||
guard::Guard,
|
||||
handler::Handler,
|
||||
responder::Responder,
|
||||
@ -391,7 +391,7 @@ where
|
||||
};
|
||||
|
||||
let mut rdef = if config.is_root() || !self.rdef.is_empty() {
|
||||
ResourceDef::new(insert_slash(self.rdef.clone()))
|
||||
ResourceDef::new(insert_leading_slash(self.rdef.clone()))
|
||||
} else {
|
||||
ResourceDef::new(self.rdef.clone())
|
||||
};
|
||||
|
@ -24,20 +24,14 @@ use {
|
||||
|
||||
use crate::{error::Error, HttpResponseBuilder};
|
||||
|
||||
/// An HTTP Response
|
||||
/// An outgoing response.
|
||||
pub struct HttpResponse<B = AnyBody> {
|
||||
res: Response<B>,
|
||||
pub(crate) error: Option<Error>,
|
||||
}
|
||||
|
||||
impl HttpResponse<AnyBody> {
|
||||
/// Create HTTP response builder with specific status.
|
||||
#[inline]
|
||||
pub fn build(status: StatusCode) -> HttpResponseBuilder {
|
||||
HttpResponseBuilder::new(status)
|
||||
}
|
||||
|
||||
/// Create a response.
|
||||
/// Constructs a response.
|
||||
#[inline]
|
||||
pub fn new(status: StatusCode) -> Self {
|
||||
Self {
|
||||
@ -46,6 +40,12 @@ impl HttpResponse<AnyBody> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Constructs a response builder with specific HTTP status.
|
||||
#[inline]
|
||||
pub fn build(status: StatusCode) -> HttpResponseBuilder {
|
||||
HttpResponseBuilder::new(status)
|
||||
}
|
||||
|
||||
/// Create an error response.
|
||||
#[inline]
|
||||
pub fn from_error(error: impl Into<Error>) -> Self {
|
||||
|
@ -14,7 +14,7 @@ use cookie::{Cookie, ParseError as CookieParseError};
|
||||
|
||||
use crate::{
|
||||
config::{AppConfig, AppService},
|
||||
dev::insert_slash,
|
||||
dev::insert_leading_slash,
|
||||
guard::Guard,
|
||||
info::ConnectionInfo,
|
||||
rmap::ResourceMap,
|
||||
@ -59,9 +59,9 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
/// An service http request
|
||||
/// A service level request wrapper.
|
||||
///
|
||||
/// ServiceRequest allows mutable access to request's internal structures
|
||||
/// Allows mutable access to request's internal structures.
|
||||
pub struct ServiceRequest {
|
||||
req: HttpRequest,
|
||||
payload: Payload,
|
||||
@ -325,6 +325,7 @@ impl fmt::Debug for ServiceRequest {
|
||||
}
|
||||
}
|
||||
|
||||
/// A service level response wrapper.
|
||||
pub struct ServiceResponse<B = AnyBody> {
|
||||
request: HttpRequest,
|
||||
response: HttpResponse<B>,
|
||||
@ -550,7 +551,7 @@ where
|
||||
};
|
||||
|
||||
let mut rdef = if config.is_root() || !self.rdef.is_empty() {
|
||||
ResourceDef::new(insert_slash(self.rdef))
|
||||
ResourceDef::new(insert_leading_slash(self.rdef))
|
||||
} else {
|
||||
ResourceDef::new(self.rdef)
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user