7
7
from typing import Any , Dict , Callable , Iterable
8
8
from urllib .parse import urlparse , urlunparse
9
9
10
- import requests
10
+ import niquests
11
11
# noinspection PyPackageRequirements
12
12
import urllib3
13
13
from urllib3 .util import SKIP_HEADER , SKIPPABLE_HEADERS
@@ -44,6 +44,7 @@ def collect_messages(
44
44
env : Environment ,
45
45
args : argparse .Namespace ,
46
46
request_body_read_callback : Callable [[bytes ], None ] = None ,
47
+ prepared_request_readiness : Callable [[niquests .PreparedRequest ], None ] = None ,
47
48
) -> Iterable [RequestsMessage ]:
48
49
httpie_session = None
49
50
httpie_session_headers = None
@@ -88,7 +89,12 @@ def collect_messages(
88
89
# TODO: reflect the split between request and send kwargs.
89
90
dump_request (request_kwargs )
90
91
91
- request = requests .Request (** request_kwargs )
92
+ hooks = None
93
+
94
+ if prepared_request_readiness :
95
+ hooks = {"pre_send" : [prepared_request_readiness ]}
96
+
97
+ request = niquests .Request (** request_kwargs , hooks = hooks )
92
98
prepared_request = requests_session .prepare_request (request )
93
99
transform_headers (request , prepared_request )
94
100
if args .path_as_is :
@@ -124,7 +130,7 @@ def collect_messages(
124
130
response_count += 1
125
131
if response .next :
126
132
if args .max_redirects and response_count == args .max_redirects :
127
- raise requests .TooManyRedirects
133
+ raise niquests .TooManyRedirects
128
134
if args .follow :
129
135
prepared_request = response .next
130
136
if args .all :
@@ -157,8 +163,8 @@ def build_requests_session(
157
163
verify : bool ,
158
164
ssl_version : str = None ,
159
165
ciphers : str = None ,
160
- ) -> requests .Session :
161
- requests_session = requests .Session ()
166
+ ) -> niquests .Session :
167
+ requests_session = niquests .Session ()
162
168
163
169
# Install our adapter.
164
170
http_adapter = HTTPieHTTPAdapter ()
@@ -186,7 +192,7 @@ def build_requests_session(
186
192
187
193
def dump_request (kwargs : dict ):
188
194
sys .stderr .write (
189
- f'\n >>> requests .request(**{ repr_dict (kwargs )} )\n \n ' )
195
+ f'\n >>> niquests .request(**{ repr_dict (kwargs )} )\n \n ' )
190
196
191
197
192
198
def finalize_headers (headers : HTTPHeadersDict ) -> HTTPHeadersDict :
@@ -210,13 +216,13 @@ def finalize_headers(headers: HTTPHeadersDict) -> HTTPHeadersDict:
210
216
211
217
212
218
def transform_headers (
213
- request : requests .Request ,
214
- prepared_request : requests .PreparedRequest
219
+ request : niquests .Request ,
220
+ prepared_request : niquests .PreparedRequest
215
221
) -> None :
216
222
"""Apply various transformations on top of the `prepared_requests`'s
217
223
headers to change the request prepreation behavior."""
218
224
219
- # Remove 'Content-Length' when it is misplaced by requests .
225
+ # Remove 'Content-Length' when it is misplaced by niquests .
220
226
if (
221
227
prepared_request .method in IGNORE_CONTENT_LENGTH_METHODS
222
228
and prepared_request .headers .get ('Content-Length' ) == '0'
@@ -232,7 +238,7 @@ def transform_headers(
232
238
233
239
def apply_missing_repeated_headers (
234
240
original_headers : HTTPHeadersDict ,
235
- prepared_request : requests .PreparedRequest
241
+ prepared_request : niquests .PreparedRequest
236
242
) -> None :
237
243
"""Update the given `prepared_request`'s headers with the original
238
244
ones. This allows the requests to be prepared as usual, and then later
@@ -291,7 +297,7 @@ def make_send_kwargs_mergeable_from_env(args: argparse.Namespace) -> dict:
291
297
cert = args .cert
292
298
if args .cert_key :
293
299
# Having a client certificate key passphrase is not supported
294
- # by requests . So we are using our own transportation structure
300
+ # by niquests . So we are using our own transportation structure
295
301
# which is compatible with their format (a tuple of minimum two
296
302
# items).
297
303
#
@@ -329,7 +335,7 @@ def make_request_kwargs(
329
335
request_body_read_callback = lambda chunk : chunk
330
336
) -> dict :
331
337
"""
332
- Translate our `args` into `requests .Request` keyword arguments.
338
+ Translate our `args` into `niquests .Request` keyword arguments.
333
339
334
340
"""
335
341
files = args .files
0 commit comments