Axum 0.4.0 (#168)

* axum 0.4.0

Signed-off-by: andrew webber (personal) <andrewvwebber@googlemail.com>
This commit is contained in:
Andrew 2022-01-17 15:23:12 +01:00 committed by GitHub
parent ba798f30cb
commit ae83a69f7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 26 deletions

View File

@ -45,7 +45,7 @@ bytes = { version = "^1.0", optional = true }
futures = { version = "^0.3", optional = true } futures = { version = "^0.3", optional = true }
http = { version = "0.2", optional = true } http = { version = "0.2", optional = true }
hyper = { version = "^0.14", optional = true } hyper = { version = "^0.14", optional = true }
axum-lib = { version = "^0.2", optional = true, package = "axum" } axum-lib = { version = "^0.4", optional = true , package="axum"}
http-body = { version = "^0.4", optional = true } http-body = { version = "^0.4", optional = true }
poem-lib = { version = "=1.2.34", optional = true, package = "poem" } poem-lib = { version = "=1.2.34", optional = true, package = "poem" }

View File

@ -2,11 +2,11 @@
name = "axum-example" name = "axum-example"
version = "0.3.0" version = "0.3.0"
authors = ["Andrew Webber <andrewvwebber@googlemail.com>"] authors = ["Andrew Webber <andrewvwebber@googlemail.com>"]
edition = "2018" edition = "2021"
[dependencies] [dependencies]
cloudevents-sdk = { path = "../..", features = ["axum"] } cloudevents-sdk = { path = "../..", features = ["axum"] }
axum = "^0.2" axum = "^0.4"
http = "^0.2" http = "^0.2"
tokio = { version = "^1", features = ["full"] } tokio = { version = "^1", features = ["full"] }
tracing = "^0.1" tracing = "^0.1"

View File

@ -1,6 +1,5 @@
use axum::{ use axum::{
handler::{get, post}, routing::{get, post},
routing::BoxRoute,
Router, Router,
}; };
use cloudevents::Event; use cloudevents::Event;
@ -8,7 +7,7 @@ use http::StatusCode;
use std::net::SocketAddr; use std::net::SocketAddr;
use tower_http::trace::TraceLayer; use tower_http::trace::TraceLayer;
fn echo_app() -> Router<BoxRoute> { fn echo_app() -> Router {
Router::new() Router::new()
.route("/", get(|| async { "hello from cloudevents server" })) .route("/", get(|| async { "hello from cloudevents server" }))
.route( .route(
@ -19,7 +18,6 @@ fn echo_app() -> Router<BoxRoute> {
}), }),
) )
.layer(TraceLayer::new_for_http()) .layer(TraceLayer::new_for_http())
.boxed()
} }
#[tokio::main] #[tokio::main]

View File

@ -8,14 +8,13 @@
//! ``` //! ```
//! use axum_lib as axum; //! use axum_lib as axum;
//! use axum::{ //! use axum::{
//! handler::{get, post}, //! routing::{get, post},
//! routing::BoxRoute,
//! Router, //! Router,
//! }; //! };
//! use cloudevents::Event; //! use cloudevents::Event;
//! use http::StatusCode; //! use http::StatusCode;
//! //!
//! fn app() -> Router<BoxRoute> { //! fn app() -> Router {
//! Router::new() //! Router::new()
//! .route("/", get(|| async { "hello from cloudevents server" })) //! .route("/", get(|| async { "hello from cloudevents server" }))
//! .route( //! .route(
@ -25,7 +24,6 @@
//! (StatusCode::OK, event) //! (StatusCode::OK, event)
//! }), //! }),
//! ) //! )
//! .boxed()
//! } //! }
//! //!
//! ``` //! ```
@ -35,15 +33,14 @@
//! ``` //! ```
//! use axum_lib as axum; //! use axum_lib as axum;
//! use axum::{ //! use axum::{
//! handler::{get, post}, //! routing::{get, post},
//! routing::BoxRoute,
//! Router, //! Router,
//! }; //! };
//! use cloudevents::{Event, EventBuilder, EventBuilderV10}; //! use cloudevents::{Event, EventBuilder, EventBuilderV10};
//! use http::StatusCode; //! use http::StatusCode;
//! use serde_json::json; //! use serde_json::json;
//! //!
//! fn app() -> Router<BoxRoute> { //! fn app() -> Router {
//! Router::new() //! Router::new()
//! .route("/", get(|| async { "hello from cloudevents server" })) //! .route("/", get(|| async { "hello from cloudevents server" }))
//! .route( //! .route(
@ -70,7 +67,6 @@
//! Ok::<Event, (StatusCode, String)>(event) //! Ok::<Event, (StatusCode, String)>(event)
//! }), //! }),
//! ) //! )
//! .boxed()
//! } //! }
//! //!
//! ``` //! ```
@ -85,9 +81,8 @@ mod tests {
use axum::{ use axum::{
body::Body, body::Body,
handler::{get, post},
http::{self, Request, StatusCode}, http::{self, Request, StatusCode},
routing::BoxRoute, routing::{get, post},
Router, Router,
}; };
use chrono::Utc; use chrono::Utc;
@ -96,7 +91,7 @@ mod tests {
use crate::Event; use crate::Event;
fn echo_app() -> Router<BoxRoute> { fn echo_app() -> Router {
Router::new() Router::new()
.route("/", get(|| async { "hello from cloudevents server" })) .route("/", get(|| async { "hello from cloudevents server" }))
.route( .route(
@ -106,7 +101,6 @@ mod tests {
(StatusCode::OK, event) (StatusCode::OK, event)
}), }),
) )
.boxed()
} }
#[tokio::test] #[tokio::test]

View File

@ -1,22 +1,27 @@
use axum_lib as axum; use axum_lib as axum;
use axum::{body::Body, http::Response, response::IntoResponse}; use axum::{
body::{boxed, BoxBody},
http::Response,
response::IntoResponse,
};
use http::{header, StatusCode}; use http::{header, StatusCode};
use hyper::body::Body;
use crate::binding::http::builder::adapter::to_response; use crate::binding::http::builder::adapter::to_response;
use crate::event::Event; use crate::event::Event;
impl IntoResponse for Event { impl IntoResponse for Event {
type Body = Body; fn into_response(self) -> Response<BoxBody> {
type BodyError = <Self::Body as axum::body::HttpBody>::Error;
fn into_response(self) -> Response<Body> {
match to_response(self) { match to_response(self) {
Ok(resp) => resp, Ok(resp) => {
let (parts, body) = resp.into_parts();
Response::from_parts(parts, boxed(body))
}
Err(err) => Response::builder() Err(err) => Response::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR) .status(StatusCode::INTERNAL_SERVER_ERROR)
.header(header::CONTENT_TYPE, "text/plain") .header(header::CONTENT_TYPE, "text/plain")
.body(err.to_string().into()) .body(boxed(Body::from(err.to_string())))
.unwrap(), .unwrap(),
} }
} }