1- use actix_service :: { Service , Transform } ;
2- use actix_utils :: future ;
3- use actix_utils :: future :: Ready ;
1+ use std :: rc :: Rc ;
2+
3+ use actix_service :: Service ;
44use actix_web:: body:: BoxBody ;
55use actix_web:: dev:: { ServiceRequest , ServiceResponse } ;
66use actix_web:: http:: header:: HeaderMap ;
@@ -10,64 +10,19 @@ use actix_web::{Error, HttpResponse};
1010use futures_util:: future:: LocalBoxFuture ;
1111use futures_util:: TryFutureExt ;
1212use reqwest:: Client ;
13- use std:: rc:: Rc ;
1413use url:: Url ;
1514
16- use crate :: errors :: PrerenderError ;
15+ use crate :: error :: PrerenderError ;
1716use crate :: { IGNORED_EXTENSIONS , USER_AGENTS } ;
1817
19- #[ derive( Debug , Clone ) ]
20- pub struct Prerender {
21- inner : Rc < Inner > ,
22- }
23-
2418#[ derive( Debug , Clone ) ]
2519pub struct Inner {
26- prerender_service_url : Url ,
27- inner_client : Client ,
28- prerender_token : String ,
20+ pub ( crate ) prerender_service_url : Url ,
21+ pub ( crate ) inner_client : Client ,
22+ pub ( crate ) prerender_token : String ,
2923}
3024
31- impl Prerender { }
32-
33- #[ derive( Debug , Clone ) ]
34- pub struct PrerenderBuilder { }
35-
36- impl PrerenderBuilder {
37- pub fn use_prerender_io ( self , token : String ) -> Prerender {
38- let inner = Inner {
39- prerender_service_url : prerender_url ( ) ,
40- inner_client : Client :: default ( ) ,
41- prerender_token : token,
42- } ;
43-
44- Prerender { inner : Rc :: new ( inner) }
45- }
46-
47- pub fn use_custom_prerender_url (
48- self ,
49- prerender_service_url : & str ,
50- token : String ,
51- ) -> Result < Prerender , PrerenderError > {
52- let prerender_service_url = Url :: parse ( prerender_service_url) . map_err ( |_| PrerenderError :: InvalidUrl ) ?;
53-
54- let inner = Inner {
55- prerender_service_url,
56- inner_client : Client :: default ( ) ,
57- prerender_token : token,
58- } ;
59-
60- Ok ( Prerender { inner : Rc :: new ( inner) } )
61- }
62- }
63-
64- impl Prerender {
65- pub const fn builder ( ) -> PrerenderBuilder {
66- PrerenderBuilder { }
67- }
68- }
69-
70- fn prerender_url ( ) -> Url {
25+ pub ( crate ) fn prerender_url ( ) -> Url {
7126 Url :: parse ( "https://service.prerender.io" ) . unwrap ( )
7227}
7328
@@ -118,7 +73,7 @@ pub(crate) fn should_prerender(req: &ServiceRequest) -> bool {
11873#[ derive( Debug ) ]
11974pub struct PrerenderMiddleware < S > {
12075 pub ( crate ) service : S ,
121- inner : Rc < Inner > ,
76+ pub ( crate ) inner : Rc < Inner > ,
12277}
12378
12479impl < S > PrerenderMiddleware < S > {
@@ -190,42 +145,24 @@ where
190145 }
191146}
192147
193- impl < S > Transform < S , ServiceRequest > for Prerender
194- where
195- S : Service < ServiceRequest , Response = ServiceResponse , Error = Error > ,
196- S :: Future : ' static ,
197- {
198- type Response = ServiceResponse < BoxBody > ;
199- type Error = Error ;
200- type Transform = PrerenderMiddleware < S > ;
201- type InitError = ( ) ;
202- type Future = Ready < Result < Self :: Transform , Self :: InitError > > ;
203-
204- fn new_transform ( & self , service : S ) -> Self :: Future {
205- future:: ok ( PrerenderMiddleware {
206- service,
207- inner : Rc :: clone ( & self . inner ) ,
208- } )
209- }
210- }
211-
212148#[ cfg( test) ]
213149mod tests {
214150
151+ use crate :: builder:: Prerender ;
215152 use actix_web:: http:: header;
216153 use actix_web:: middleware:: Compat ;
217154 use actix_web:: test:: TestRequest ;
218155 use actix_web:: App ;
219156
220- use crate :: middleware:: { prerender_url, should_prerender, Prerender , PrerenderMiddleware } ;
157+ use crate :: middleware:: { prerender_url, should_prerender, PrerenderMiddleware } ;
221158
222159 fn _init_logger ( ) {
223160 let _ = env_logger:: builder ( ) . is_test ( true ) . try_init ( ) ;
224161 }
225162
226163 #[ actix_web:: test]
227164 async fn compat_compat ( ) {
228- App :: new ( ) . wrap ( Compat :: new ( Prerender :: builder ( ) . use_prerender_io ( "" . to_string ( ) ) ) ) ;
165+ App :: new ( ) . wrap ( Compat :: new ( Prerender :: build ( ) . use_prerender_io ( "" . to_string ( ) ) ) ) ;
229166 }
230167
231168 #[ actix_web:: test]
@@ -283,7 +220,7 @@ mod tests {
283220 }
284221
285222 fn _create_middleware ( ) -> Prerender {
286- Prerender :: builder ( ) . use_prerender_io ( "" . to_string ( ) )
223+ Prerender :: build ( ) . use_prerender_io ( "" . to_string ( ) )
287224 }
288225
289226 #[ actix_web:: test]
0 commit comments