@@ -16,6 +16,7 @@ use diesel_async::AsyncPgConnection;
1616use futures_util:: future:: BoxFuture ;
1717use futures_util:: { FutureExt , TryStreamExt } ;
1818use http:: header;
19+ use http:: request:: Parts ;
1920use indexmap:: IndexMap ;
2021use serde:: { Deserialize , Serialize } ;
2122
@@ -76,8 +77,8 @@ impl PaginationOptionsBuilder {
7677 self
7778 }
7879
79- pub ( crate ) fn gather < T : RequestPartsExt > ( self , req : & T ) -> AppResult < PaginationOptions > {
80- let params = req . query ( ) ;
80+ pub ( crate ) fn gather ( self , parts : & Parts ) -> AppResult < PaginationOptions > {
81+ let params = parts . query ( ) ;
8182 let page_param = params. get ( "page" ) ;
8283 let seek_param = params. get ( "seek" ) ;
8384
@@ -100,16 +101,16 @@ impl PaginationOptionsBuilder {
100101 }
101102
102103 if numeric_page > MAX_PAGE_BEFORE_SUSPECTED_BOT {
103- req . request_log ( ) . add ( "bot" , "suspected" ) ;
104+ parts . request_log ( ) . add ( "bot" , "suspected" ) ;
104105 }
105106
106107 // Block large offsets for known violators of the crawler policy
107108 if self . limit_page_numbers {
108- let config = & req . app ( ) . config ;
109+ let config = & parts . app ( ) . config ;
109110 if numeric_page > config. max_allowed_page_offset
110- && is_useragent_or_ip_blocked ( config, req )
111+ && is_useragent_or_ip_blocked ( config, parts )
111112 {
112- req . request_log ( ) . add ( "cause" , "large page offset" ) ;
113+ parts . request_log ( ) . add ( "cause" , "large page offset" ) ;
113114
114115 let error =
115116 format ! ( "Page {numeric_page} is unavailable for performance reasons. Please take a look at https://crates.io/data-access for alternatives." ) ;
@@ -739,12 +740,14 @@ mod tests {
739740 ) ;
740741 }
741742
742- fn mock ( query : & str ) -> Request < ( ) > {
743+ fn mock ( query : & str ) -> Parts {
743744 Request :: builder ( )
744745 . method ( Method :: GET )
745746 . uri ( format ! ( "/?{query}" ) )
746747 . body ( ( ) )
747748 . unwrap ( )
749+ . into_parts ( )
750+ . 0
748751 }
749752
750753 fn assert_pagination_error ( options : PaginationOptionsBuilder , query : & str , message : & str ) {
0 commit comments