Skip to content

Commit 2d97469

Browse files
committed
feat: added gzip auto-decoding
Signed-off-by: Martin <martin@hotmail.com.br>
1 parent 64bd575 commit 2d97469

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ actix-web = { version = "4", default-features = false }
1414

1515
futures-util = "0.3"
1616
log = "0.4"
17-
reqwest = { version = "0.11", features = ["tokio-rustls"] }
17+
reqwest = { version = "0.11", features = ["tokio-rustls", "gzip"] }
1818
thiserror = "1"
1919
url = "2"
2020

src/builder.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,21 @@ pub struct PrerenderBuilder {
5151
pub(crate) before_render_fn: Option<fn(&ServiceRequest, &mut HeaderMap)>,
5252
}
5353

54+
fn default_client() -> Client {
55+
Client::builder()
56+
.gzip(true)
57+
.timeout(std::time::Duration::new(25, 0))
58+
.build()
59+
.unwrap()
60+
}
61+
5462
impl PrerenderBuilder {
5563
/// Creates a `Prerender` middleware that delegate requests to the web `prerender.io` service.
5664
pub fn use_prerender_io(self, token: String) -> Prerender {
5765
let inner = Inner {
5866
before_render_fn: self.before_render_fn,
5967
forward_headers: self.forward_headers,
60-
inner_client: Client::default(),
68+
inner_client: default_client(),
6169
prerender_service_url: middleware::prerender_url(),
6270
prerender_token: Some(token),
6371
};
@@ -72,7 +80,7 @@ impl PrerenderBuilder {
7280
let inner = Inner {
7381
before_render_fn: self.before_render_fn,
7482
forward_headers: self.forward_headers,
75-
inner_client: Client::default(),
83+
inner_client: default_client(),
7684
prerender_service_url,
7785
prerender_token: None,
7886
};

src/middleware.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::rc::Rc;
33
use actix_service::Service;
44
use actix_web::body::{EitherBody, MessageBody};
55
use actix_web::dev::{ServiceRequest, ServiceResponse};
6+
use actix_web::http::header::ContentEncoding;
67
use actix_web::http::uri::PathAndQuery;
78
use actix_web::http::{header, Method};
89
use actix_web::{Error, HttpResponse};
@@ -119,13 +120,13 @@ impl<S> PrerenderMiddleware<S> {
119120
prerender_headers.remove(header::HOST);
120121
}
121122

122-
prerender_headers.append(header::ACCEPT_ENCODING, "gzip".parse().unwrap());
123+
prerender_headers.insert(header::ACCEPT_ENCODING, ContentEncoding::Gzip.to_header_value());
123124
if let Some(token) = &inner.prerender_token {
124125
prerender_headers.append("X-Prerender-Token", token.parse().unwrap());
125126
}
126127

127-
if let Some(function) = &inner.before_render_fn {
128-
function(&req, &mut prerender_headers);
128+
if let Some(before_render_fn) = &inner.before_render_fn {
129+
before_render_fn(&req, &mut prerender_headers);
129130
}
130131

131132
let url_to_request = Self::prepare_build_api_url(&inner.prerender_service_url, &req);

0 commit comments

Comments
 (0)