Skip to content

Commit 1e147eb

Browse files
xiaoqilinjcrossley3
authored andcommitted
fix dev-dependencies, bump axum version
Signed-off-by: xiaoqilin <[email protected]>
1 parent 4a86973 commit 1e147eb

File tree

4 files changed

+51
-58
lines changed

4 files changed

+51
-58
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ bytes = { version = "^1.0", optional = true }
5353
futures = { version = "^0.3", optional = true }
5454
http = { version = "0.2", optional = true }
5555
hyper = { version = "^0.14", optional = true }
56-
axum-lib = { version = "^0.5", optional = true , package="axum"}
56+
axum-lib = { version = "^0.6", optional = true, package="axum"}
5757
http-body = { version = "^0.4", optional = true }
5858
poem-lib = { version = "=1.2.34", optional = true, package = "poem" }
5959
nats-lib = { version = "0.21.0", optional = true, package = "nats" }
@@ -66,7 +66,7 @@ web-sys = { version = "^0.3", features = ["Window", "Location"] }
6666

6767
[dev-dependencies]
6868
rstest = "0.6"
69-
claim = "0.3.1"
69+
claims = "0.7.1"
7070
version-sync = "0.9.2"
7171
serde_yaml = "0.8"
7272
rmp-serde = "1"

example-projects/axum-example/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ edition = "2021"
66

77
[dependencies]
88
cloudevents-sdk = { path = "../..", features = ["axum"] }
9-
axum = "^0.5"
9+
axum = "^0.6"
1010
http = "^0.2"
1111
tokio = { version = "^1", features = ["full"] }
1212
tracing = "^0.1"

src/binding/axum/extract.rs

Lines changed: 47 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
use axum_lib as axum;
22

33
use async_trait::async_trait;
4-
use axum::extract::{FromRequest, RequestParts};
4+
use axum::extract::FromRequest;
5+
use axum::http::Request;
6+
use http::request::Parts;
57
use http::StatusCode;
68
use http_body::Body;
79
use hyper::body;
@@ -12,26 +14,23 @@ use crate::event::Event;
1214
type BoxError = Box<dyn std::error::Error + Send + Sync>;
1315

1416
#[async_trait]
15-
impl<B> FromRequest<B> for Event
17+
impl<S, B> FromRequest<S, B> for Event
1618
where
17-
B: Body + Send,
19+
B: Body + Send + 'static,
1820
B::Data: Send,
1921
B::Error: Into<BoxError>,
22+
S: Send + Sync,
2023
{
2124
type Rejection = (StatusCode, String);
2225

23-
async fn from_request(req: &mut RequestParts<B>) -> Result<Self, Self::Rejection> {
24-
let req_body = req
25-
.take_body()
26-
.ok_or(0)
27-
.map_err(|_| (StatusCode::BAD_REQUEST, "unexpected empty body".to_string()))?;
26+
async fn from_request(req: Request<B>, _state: &S) -> Result<Self, Self::Rejection> {
27+
let (Parts { headers, .. }, req_body) = req.into_parts();
2828
let buf = body::to_bytes(req_body)
2929
.await
3030
.map_err(|e| (StatusCode::BAD_REQUEST, format!("{}", e.into())))?
3131
.to_vec();
32-
let headers = req.headers();
3332

34-
to_event(headers, buf).map_err(|e| (StatusCode::BAD_REQUEST, format!("{}", e)))
33+
to_event(&headers, buf).map_err(|e| (StatusCode::BAD_REQUEST, format!("{}", e)))
3534
}
3635
}
3736

@@ -49,39 +48,35 @@ mod tests {
4948
async fn axum_test_request() {
5049
let expected = fixtures::v10::minimal_string_extension();
5150

52-
let mut request = RequestParts::new(
53-
Request::builder()
54-
.method(http::Method::POST)
55-
.header("ce-specversion", "1.0")
56-
.header("ce-id", "0001")
57-
.header("ce-type", "test_event.test_application")
58-
.header("ce-source", "http://localhost/")
59-
.header("ce-someint", "10")
60-
.body(Body::empty())
61-
.unwrap(),
62-
);
51+
let mut request = Request::builder()
52+
.method(http::Method::POST)
53+
.header("ce-specversion", "1.0")
54+
.header("ce-id", "0001")
55+
.header("ce-type", "test_event.test_application")
56+
.header("ce-source", "http://localhost/")
57+
.header("ce-someint", "10")
58+
.body(Body::empty())
59+
.unwrap();
6360

64-
let result = Event::from_request(&mut request).await.unwrap();
61+
let result = Event::from_request(request, &()).await.unwrap();
6562

6663
assert_eq!(expected, result);
6764
}
6865

6966
#[tokio::test]
7067
async fn axum_test_bad_request() {
71-
let mut request = RequestParts::new(
72-
Request::builder()
73-
.method(http::Method::POST)
74-
.header("ce-specversion", "BAD SPECIFICATION")
75-
.header("ce-id", "0001")
76-
.header("ce-type", "example.test")
77-
.header("ce-source", "http://localhost/")
78-
.header("ce-someint", "10")
79-
.header("ce-time", fixtures::time().to_rfc3339())
80-
.body(Body::empty())
81-
.unwrap(),
82-
);
83-
84-
let result = Event::from_request(&mut request).await;
68+
let mut request = Request::builder()
69+
.method(http::Method::POST)
70+
.header("ce-specversion", "BAD SPECIFICATION")
71+
.header("ce-id", "0001")
72+
.header("ce-type", "example.test")
73+
.header("ce-source", "http://localhost/")
74+
.header("ce-someint", "10")
75+
.header("ce-time", fixtures::time().to_rfc3339())
76+
.body(Body::empty())
77+
.unwrap();
78+
79+
let result = Event::from_request(request, &()).await;
8580
assert!(result.is_err());
8681
let rejection = result.unwrap_err();
8782

@@ -93,24 +88,22 @@ mod tests {
9388
async fn axum_test_request_with_full_data() {
9489
let expected = fixtures::v10::full_binary_json_data_string_extension();
9590

96-
let mut request = RequestParts::new(
97-
Request::builder()
98-
.method(http::Method::POST)
99-
.header("ce-specversion", "1.0")
100-
.header("ce-id", "0001")
101-
.header("ce-type", "test_event.test_application")
102-
.header("ce-source", "http://localhost/")
103-
.header("ce-subject", "cloudevents-sdk")
104-
.header("content-type", "application/json")
105-
.header("ce-string_ex", "val")
106-
.header("ce-int_ex", "10")
107-
.header("ce-bool_ex", "true")
108-
.header("ce-time", &fixtures::time().to_rfc3339())
109-
.body(Body::from(fixtures::json_data_binary()))
110-
.unwrap(),
111-
);
112-
113-
let result = Event::from_request(&mut request).await.unwrap();
91+
let mut request = Request::builder()
92+
.method(http::Method::POST)
93+
.header("ce-specversion", "1.0")
94+
.header("ce-id", "0001")
95+
.header("ce-type", "test_event.test_application")
96+
.header("ce-source", "http://localhost/")
97+
.header("ce-subject", "cloudevents-sdk")
98+
.header("content-type", "application/json")
99+
.header("ce-string_ex", "val")
100+
.header("ce-int_ex", "10")
101+
.header("ce-bool_ex", "true")
102+
.header("ce-time", &fixtures::time().to_rfc3339())
103+
.body(Body::from(fixtures::json_data_binary()))
104+
.unwrap();
105+
106+
let result = Event::from_request(request, &()).await.unwrap();
114107

115108
assert_eq!(expected, result);
116109
}

src/event/builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ mod tests {
6666
use crate::EventBuilder;
6767
use crate::EventBuilderV03;
6868
use crate::EventBuilderV10;
69-
use claim::*;
69+
use claims::*;
7070
use rstest::rstest;
7171
use serde_json::{json, Value};
7272
use serde_yaml;

0 commit comments

Comments
 (0)