Merge branch 'master' into master

This commit is contained in:
Naim A 2019-10-08 01:21:03 +03:00 committed by GitHub
commit da10fd6ca5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 39 additions and 37 deletions

View File

@ -6,6 +6,10 @@
* Add support for serde_json::Value to be passed as argument to ResponseBuilder.body() * Add support for serde_json::Value to be passed as argument to ResponseBuilder.body()
### Fixed
* To be compatible with non-English error responses, `ResponseError` rendered with `text/plain; charset=utf-8` header #1118
## [0.2.10] - 2019-09-11 ## [0.2.10] - 2019-09-11

View File

@ -75,7 +75,7 @@ pub trait ResponseError: fmt::Debug + fmt::Display {
let _ = write!(Writer(&mut buf), "{}", self); let _ = write!(Writer(&mut buf), "{}", self);
resp.headers_mut().insert( resp.headers_mut().insert(
header::CONTENT_TYPE, header::CONTENT_TYPE,
header::HeaderValue::from_static("text/plain"), header::HeaderValue::from_static("text/plain; charset=utf-8"),
); );
resp.set_body(Body::from(buf)) resp.set_body(Body::from(buf))
} }
@ -536,7 +536,7 @@ where
let _ = write!(Writer(&mut buf), "{}", self); let _ = write!(Writer(&mut buf), "{}", self);
res.headers_mut().insert( res.headers_mut().insert(
header::CONTENT_TYPE, header::CONTENT_TYPE,
header::HeaderValue::from_static("text/plain"), header::HeaderValue::from_static("text/plain; charset=utf-8"),
); );
res.set_body(Body::from(buf)) res.set_body(Body::from(buf))
} }

View File

@ -46,9 +46,9 @@ pub trait FromRequest: Sized {
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// # #[macro_use] extern crate serde_derive;
/// use actix_web::{web, dev, App, Error, HttpRequest, FromRequest}; /// use actix_web::{web, dev, App, Error, HttpRequest, FromRequest};
/// use actix_web::error::ErrorBadRequest; /// use actix_web::error::ErrorBadRequest;
/// use serde_derive::Deserialize;
/// use rand; /// use rand;
/// ///
/// #[derive(Debug, Deserialize)] /// #[derive(Debug, Deserialize)]
@ -119,9 +119,9 @@ where
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// # #[macro_use] extern crate serde_derive;
/// use actix_web::{web, dev, App, Result, Error, HttpRequest, FromRequest}; /// use actix_web::{web, dev, App, Result, Error, HttpRequest, FromRequest};
/// use actix_web::error::ErrorBadRequest; /// use actix_web::error::ErrorBadRequest;
/// use serde_derive::Deserialize;
/// use rand; /// use rand;
/// ///
/// #[derive(Debug, Deserialize)] /// #[derive(Debug, Deserialize)]

View File

@ -1,16 +1,16 @@
//! Route match guards. //! Route match guards.
//! //!
//! Guards are one of the way how actix-web router chooses //! Guards are one of the ways how actix-web router chooses a
//! handler service. In essence it just function that accepts //! handler service. In essence it is just a function that accepts a
//! reference to a `RequestHead` instance and returns boolean. //! reference to a `RequestHead` instance and returns a boolean.
//! It is possible to add guards to *scopes*, *resources* //! It is possible to add guards to *scopes*, *resources*
//! and *routes*. Actix provide several guards by default, like various //! and *routes*. Actix provide several guards by default, like various
//! http methods, header, etc. To become a guard, type must implement `Guard` //! http methods, header, etc. To become a guard, type must implement `Guard`
//! trait. Simple functions coulds guards as well. //! trait. Simple functions coulds guards as well.
//! //!
//! Guard can not modify request object. But it is possible to //! Guards can not modify the request object. But it is possible
//! to store extra attributes on a request by using `Extensions` container. //! to store extra attributes on a request by using the `Extensions` container.
//! Extensions container available via `RequestHead::extensions()` method. //! Extensions containers are available via the `RequestHead::extensions()` method.
//! //!
//! ```rust //! ```rust
//! use actix_web::{web, http, dev, guard, App, HttpResponse}; //! use actix_web::{web, http, dev, guard, App, HttpResponse};
@ -29,11 +29,11 @@
use actix_http::http::{self, header, uri::Uri, HttpTryFrom}; use actix_http::http::{self, header, uri::Uri, HttpTryFrom};
use actix_http::RequestHead; use actix_http::RequestHead;
/// Trait defines resource guards. Guards are used for routes selection. /// Trait defines resource guards. Guards are used for route selection.
/// ///
/// Guard can not modify request object. But it is possible to /// Guards can not modify the request object. But it is possible
/// to store extra attributes on request by using `Extensions` container, /// to store extra attributes on a request by using the `Extensions` container.
/// Extensions container available via `RequestHead::extensions()` method. /// Extensions containers are available via the `RequestHead::extensions()` method.
pub trait Guard { pub trait Guard {
/// Check if request matches predicate /// Check if request matches predicate
fn check(&self, request: &RequestHead) -> bool; fn check(&self, request: &RequestHead) -> bool;

View File

@ -271,8 +271,8 @@ impl Drop for HttpRequest {
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// # #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App, HttpRequest}; /// use actix_web::{web, App, HttpRequest};
/// use serde_derive::Deserialize;
/// ///
/// /// extract `Thing` from request /// /// extract `Thing` from request
/// fn index(req: HttpRequest) -> String { /// fn index(req: HttpRequest) -> String {

View File

@ -178,8 +178,8 @@ impl Route {
/// Set handler function, use request extractors for parameters. /// Set handler function, use request extractors for parameters.
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, http, App}; /// use actix_web::{web, http, App};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {
@ -239,9 +239,9 @@ impl Route {
/// ///
/// ```rust /// ```rust
/// # use futures::future::ok; /// # use futures::future::ok;
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App, Error}; /// use actix_web::{web, App, Error};
/// use futures::Future; /// use futures::Future;
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {

View File

@ -35,9 +35,8 @@ use crate::responder::Responder;
/// ///
/// ### Example /// ### Example
/// ```rust /// ```rust
/// # extern crate actix_web; /// use actix_web::web;
/// #[macro_use] extern crate serde_derive; /// use serde_derive::Deserialize;
/// use actix_web::{web, App};
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct FormData { /// struct FormData {
@ -61,9 +60,9 @@ use crate::responder::Responder;
/// ///
/// ### Example /// ### Example
/// ```rust /// ```rust
/// # #[macro_use] extern crate serde_derive; /// use actix_web::*;
/// # use actix_web::*; /// use serde_derive::Serialize;
/// # ///
/// #[derive(Serialize)] /// #[derive(Serialize)]
/// struct SomeForm { /// struct SomeForm {
/// name: String, /// name: String,
@ -167,8 +166,8 @@ impl<T: Serialize> Responder for Form<T> {
/// Form extractor configuration /// Form extractor configuration
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App, FromRequest, Result}; /// use actix_web::{web, App, FromRequest, Result};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct FormData { /// struct FormData {

View File

@ -33,8 +33,8 @@ use crate::responder::Responder;
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App}; /// use actix_web::{web, App};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {
@ -60,9 +60,9 @@ use crate::responder::Responder;
/// trait from *serde*. /// trait from *serde*.
/// ///
/// ```rust /// ```rust
/// # #[macro_use] extern crate serde_derive; /// use actix_web::*;
/// # use actix_web::*; /// use serde_derive::Serialize;
/// # ///
/// #[derive(Serialize)] /// #[derive(Serialize)]
/// struct MyObj { /// struct MyObj {
/// name: String, /// name: String,
@ -144,8 +144,8 @@ impl<T: Serialize> Responder for Json<T> {
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App}; /// use actix_web::{web, App};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {
@ -203,8 +203,8 @@ where
/// Json extractor configuration /// Json extractor configuration
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{error, web, App, FromRequest, HttpResponse}; /// use actix_web::{error, web, App, FromRequest, HttpResponse};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {

View File

@ -39,8 +39,8 @@ use crate::FromRequest;
/// implements `Deserialize` trait from *serde*. /// implements `Deserialize` trait from *serde*.
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App, Error}; /// use actix_web::{web, App, Error};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {
@ -134,8 +134,8 @@ impl<T: fmt::Display> fmt::Display for Path<T> {
/// implements `Deserialize` trait from *serde*. /// implements `Deserialize` trait from *serde*.
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App, Error}; /// use actix_web::{web, App, Error};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {
@ -190,10 +190,9 @@ where
/// Path extractor configuration /// Path extractor configuration
/// ///
/// ```rust /// ```rust
/// # #[macro_use]
/// # extern crate serde_derive;
/// use actix_web::web::PathConfig; /// use actix_web::web::PathConfig;
/// use actix_web::{error, web, App, FromRequest, HttpResponse}; /// use actix_web::{error, web, App, FromRequest, HttpResponse};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize, Debug)] /// #[derive(Deserialize, Debug)]
/// enum Folder { /// enum Folder {

View File

@ -21,8 +21,8 @@ use crate::request::HttpRequest;
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App}; /// use actix_web::{web, App};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Debug, Deserialize)] /// #[derive(Debug, Deserialize)]
/// pub enum ResponseType { /// pub enum ResponseType {
@ -99,8 +99,8 @@ impl<T: fmt::Display> fmt::Display for Query<T> {
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{web, App}; /// use actix_web::{web, App};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Debug, Deserialize)] /// #[derive(Debug, Deserialize)]
/// pub enum ResponseType { /// pub enum ResponseType {
@ -169,8 +169,8 @@ where
/// ## Example /// ## Example
/// ///
/// ```rust /// ```rust
/// #[macro_use] extern crate serde_derive;
/// use actix_web::{error, web, App, FromRequest, HttpResponse}; /// use actix_web::{error, web, App, FromRequest, HttpResponse};
/// use serde_derive::Deserialize;
/// ///
/// #[derive(Deserialize)] /// #[derive(Deserialize)]
/// struct Info { /// struct Info {