Skip to content

Commit 4a62009

Browse files
authored
Merge pull request #503 from http-rs/remove-http-service
Remove http service
2 parents 990b7a6 + 9a143b3 commit 4a62009

14 files changed

+200
-223
lines changed

Cargo.toml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,14 @@ rustdoc-args = ["--cfg", "feature=\"docs\""]
2424

2525
[features]
2626
default = ["h1-server"]
27-
h1-server = ["http-service-h1"]
27+
h1-server = ["async-h1"]
2828
docs = ["unstable"]
2929
unstable = []
3030

3131
[dependencies]
3232
async-sse = "2.1.0"
3333
http-types = "1.0.1"
34-
http-service = "0.5.0"
35-
http-service-h1 = { version = "0.1.0", optional = true }
34+
async-h1 = { version = "1.1.2", optional = true }
3635
route-recognizer = "0.1.13"
3736
serde = "1.0.102"
3837
serde_json = "1.0.41"
@@ -54,7 +53,6 @@ basic-cookies = "0.1.3"
5453
bytes = "0.4.12"
5554
futures-fs = "0.0.5"
5655
futures-util = { version = "0.3.0", features = ["compat"] }
57-
http-service-mock = "0.5.0"
5856
juniper = "0.14.1"
5957
mime = "0.3.14"
6058
mime_guess = "2.0.1"
@@ -64,6 +62,7 @@ structopt = "0.3.3"
6462
surf = "2.0.0-alpha.1"
6563
futures = "0.3.1"
6664
femme = "1.3.0"
65+
portpicker = "0.1.0"
6766

6867
[[test]]
6968
name = "nested"

src/middleware.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
33
use std::sync::Arc;
44

5-
#[doc(inline)]
6-
pub use http_service::HttpService;
7-
85
use crate::endpoint::DynEndpoint;
96
use crate::utils::BoxFuture;
107
use crate::Request;

src/request.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
use cookie::Cookie;
2-
use http_types::{
3-
headers::{HeaderName, HeaderValue},
4-
Method, StatusCode, Url, Version,
5-
};
62
use route_recognizer::Params;
73
use serde::Deserialize;
84

@@ -13,6 +9,8 @@ use std::pin::Pin;
139
use std::{str::FromStr, sync::Arc};
1410

1511
use crate::cookies::CookieData;
12+
use crate::http::headers::{HeaderName, HeaderValue};
13+
use crate::http::{self, Method, StatusCode, Url, Version};
1614
use crate::Response;
1715

1816
/// An HTTP request.
@@ -25,7 +23,7 @@ use crate::Response;
2523
#[derive(Debug)]
2624
pub struct Request<State> {
2725
pub(crate) state: Arc<State>,
28-
pub(crate) request: http_service::Request,
26+
pub(crate) request: http::Request,
2927
pub(crate) route_params: Vec<Params>,
3028
}
3129

src/response.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ use async_std::io::prelude::*;
22
use std::convert::TryFrom;
33

44
use cookie::Cookie;
5-
use http_service::Body;
6-
use http_types::{
7-
headers::{HeaderName, HeaderValue},
8-
StatusCode,
9-
};
105
use mime::Mime;
116
use serde::Serialize;
127

8+
use crate::http::headers::{HeaderName, HeaderValue};
9+
use crate::http::{self, Body, StatusCode};
10+
1311
#[derive(Debug)]
1412
pub(crate) enum CookieEvent {
1513
Added(Cookie<'static>),
@@ -19,7 +17,7 @@ pub(crate) enum CookieEvent {
1917
/// An HTTP response
2018
#[derive(Debug)]
2119
pub struct Response {
22-
pub(crate) res: http_service::Response,
20+
pub(crate) res: http::Response,
2321
// tracking here
2422
pub(crate) cookie_events: Vec<CookieEvent>,
2523
}
@@ -251,14 +249,14 @@ impl Response {
251249
}
252250
}
253251

254-
impl Into<http_service::Response> for Response {
255-
fn into(self) -> http_service::Response {
252+
impl Into<http::Response> for Response {
253+
fn into(self) -> http::Response {
256254
self.res
257255
}
258256
}
259257

260-
impl From<http_service::Response> for Response {
261-
fn from(res: http_service::Response) -> Self {
258+
impl From<http::Response> for Response {
259+
fn from(res: http::Response) -> Self {
262260
Self {
263261
res,
264262
cookie_events: vec![],

src/security/cors.rs

Lines changed: 28 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::utils::BoxFuture;
22
use http_types::headers::HeaderValue;
33
use http_types::{headers, Method, StatusCode};
44

5+
use crate::http;
56
use crate::middleware::{Middleware, Next};
67
use crate::{Request, Result};
78

@@ -167,7 +168,7 @@ impl<State: Send + Sync + 'static> Middleware<State> for CorsMiddleware {
167168
return Ok(self.build_preflight_response(&origins).into());
168169
}
169170

170-
let mut response: http_service::Response = next.run(req).await?.into();
171+
let mut response: http::Response = next.run(req).await?.into();
171172
response
172173
.insert_header(
173174
headers::ACCESS_CONTROL_ALLOW_ORIGIN,
@@ -242,7 +243,6 @@ impl From<Vec<&str>> for Origin {
242243
#[cfg(test)]
243244
mod test {
244245
use super::*;
245-
use http_service_mock::make_server;
246246
use http_types::headers::{self, HeaderValue};
247247

248248
const ALLOW_ORIGIN: &str = "example.com";
@@ -271,8 +271,8 @@ mod test {
271271
req
272272
}
273273

274-
#[test]
275-
fn preflight_request() {
274+
#[async_std::test]
275+
async fn preflight_request() {
276276
let mut app = app();
277277
app.middleware(
278278
CorsMiddleware::new()
@@ -282,13 +282,11 @@ mod test {
282282
.allow_credentials(true),
283283
);
284284

285-
let mut server = make_server(app).unwrap();
286-
287285
let mut req = http_types::Request::new(http_types::Method::Options, endpoint_url());
288286
req.insert_header(http_types::headers::ORIGIN, ALLOW_ORIGIN)
289287
.unwrap();
290288

291-
let res = server.simulate(req).unwrap();
289+
let res: crate::http::Response = app.respond(req).await.unwrap();
292290

293291
assert_eq!(res.status(), 200);
294292

@@ -316,13 +314,11 @@ mod test {
316314
"true"
317315
);
318316
}
319-
#[test]
320-
fn default_cors_middleware() {
317+
#[async_std::test]
318+
async fn default_cors_middleware() {
321319
let mut app = app();
322320
app.middleware(CorsMiddleware::new());
323-
324-
let mut server = make_server(app).unwrap();
325-
let res = server.simulate(request()).unwrap();
321+
let res: crate::http::Response = app.respond(request()).await.unwrap();
326322

327323
assert_eq!(res.status(), 200);
328324

@@ -332,8 +328,8 @@ mod test {
332328
);
333329
}
334330

335-
#[test]
336-
fn custom_cors_middleware() {
331+
#[async_std::test]
332+
async fn custom_cors_middleware() {
337333
let mut app = app();
338334
app.middleware(
339335
CorsMiddleware::new()
@@ -342,9 +338,7 @@ mod test {
342338
.allow_methods(ALLOW_METHODS.parse::<HeaderValue>().unwrap())
343339
.expose_headers(EXPOSE_HEADER.parse::<HeaderValue>().unwrap()),
344340
);
345-
346-
let mut server = make_server(app).unwrap();
347-
let res = server.simulate(request()).unwrap();
341+
let res: crate::http::Response = app.respond(request()).await.unwrap();
348342

349343
assert_eq!(res.status(), 200);
350344
assert_eq!(
@@ -353,13 +347,11 @@ mod test {
353347
);
354348
}
355349

356-
#[test]
357-
fn credentials_true() {
350+
#[async_std::test]
351+
async fn credentials_true() {
358352
let mut app = app();
359353
app.middleware(CorsMiddleware::new().allow_credentials(true));
360-
361-
let mut server = make_server(app).unwrap();
362-
let res = server.simulate(request()).unwrap();
354+
let res: crate::http::Response = app.respond(request()).await.unwrap();
363355

364356
assert_eq!(res.status(), 200);
365357
assert_eq!(
@@ -370,20 +362,18 @@ mod test {
370362
);
371363
}
372364

373-
#[test]
374-
fn set_allow_origin_list() {
365+
#[async_std::test]
366+
async fn set_allow_origin_list() {
375367
let mut app = app();
376368
let origins = vec![ALLOW_ORIGIN, "foo.com", "bar.com"];
377369
app.middleware(CorsMiddleware::new().allow_origin(origins.clone()));
378-
let mut server = make_server(app).unwrap();
379370

380371
for origin in origins {
381-
let mut request = http_types::Request::new(http_types::Method::Get, endpoint_url());
382-
request
383-
.insert_header(http_types::headers::ORIGIN, origin)
372+
let mut req = http_types::Request::new(http_types::Method::Get, endpoint_url());
373+
req.insert_header(http_types::headers::ORIGIN, origin)
384374
.unwrap();
385375

386-
let res = server.simulate(request).unwrap();
376+
let res: crate::http::Response = app.respond(req).await.unwrap();
387377

388378
assert_eq!(res.status(), 200);
389379
assert_eq!(
@@ -393,31 +383,26 @@ mod test {
393383
}
394384
}
395385

396-
#[test]
397-
fn not_set_origin_header() {
386+
#[async_std::test]
387+
async fn not_set_origin_header() {
398388
let mut app = app();
399389
app.middleware(CorsMiddleware::new().allow_origin(ALLOW_ORIGIN));
400390

401-
let request = http_types::Request::new(http_types::Method::Get, endpoint_url());
402-
403-
let mut server = make_server(app).unwrap();
404-
let res = server.simulate(request).unwrap();
391+
let req = crate::http::Request::new(http_types::Method::Get, endpoint_url());
392+
let res: crate::http::Response = app.respond(req).await.unwrap();
405393

406394
assert_eq!(res.status(), 200);
407395
}
408396

409-
#[test]
410-
fn unauthorized_origin() {
397+
#[async_std::test]
398+
async fn unauthorized_origin() {
411399
let mut app = app();
412400
app.middleware(CorsMiddleware::new().allow_origin(ALLOW_ORIGIN));
413401

414-
let mut request = http_types::Request::new(http_types::Method::Get, endpoint_url());
415-
request
416-
.insert_header(http_types::headers::ORIGIN, "unauthorize-origin.net")
402+
let mut req = http_types::Request::new(http_types::Method::Get, endpoint_url());
403+
req.insert_header(http_types::headers::ORIGIN, "unauthorize-origin.net")
417404
.unwrap();
418-
419-
let mut server = make_server(app).unwrap();
420-
let res = server.simulate(request).unwrap();
405+
let res: crate::http::Response = app.respond(req).await.unwrap();
421406

422407
assert_eq!(res.status(), 401);
423408
}

0 commit comments

Comments
 (0)