Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/httpx/_api.py: 57%
28 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 07:19 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 07:19 +0000
1import typing
2from contextlib import contextmanager
4from ._client import Client
5from ._config import DEFAULT_TIMEOUT_CONFIG
6from ._models import Response
7from ._types import (
8 AuthTypes,
9 CertTypes,
10 CookieTypes,
11 HeaderTypes,
12 ProxiesTypes,
13 QueryParamTypes,
14 RequestContent,
15 RequestData,
16 RequestFiles,
17 TimeoutTypes,
18 URLTypes,
19 VerifyTypes,
20)
23def request(
24 method: str,
25 url: URLTypes,
26 *,
27 params: typing.Optional[QueryParamTypes] = None,
28 content: typing.Optional[RequestContent] = None,
29 data: typing.Optional[RequestData] = None,
30 files: typing.Optional[RequestFiles] = None,
31 json: typing.Optional[typing.Any] = None,
32 headers: typing.Optional[HeaderTypes] = None,
33 cookies: typing.Optional[CookieTypes] = None,
34 auth: typing.Optional[AuthTypes] = None,
35 proxies: typing.Optional[ProxiesTypes] = None,
36 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
37 follow_redirects: bool = False,
38 verify: VerifyTypes = True,
39 cert: typing.Optional[CertTypes] = None,
40 trust_env: bool = True,
41) -> Response:
42 """
43 Sends an HTTP request.
45 **Parameters:**
47 * **method** - HTTP method for the new `Request` object: `GET`, `OPTIONS`,
48 `HEAD`, `POST`, `PUT`, `PATCH`, or `DELETE`.
49 * **url** - URL for the new `Request` object.
50 * **params** - *(optional)* Query parameters to include in the URL, as a
51 string, dictionary, or sequence of two-tuples.
52 * **content** - *(optional)* Binary content to include in the body of the
53 request, as bytes or a byte iterator.
54 * **data** - *(optional)* Form data to include in the body of the request,
55 as a dictionary.
56 * **files** - *(optional)* A dictionary of upload files to include in the
57 body of the request.
58 * **json** - *(optional)* A JSON serializable object to include in the body
59 of the request.
60 * **headers** - *(optional)* Dictionary of HTTP headers to include in the
61 request.
62 * **cookies** - *(optional)* Dictionary of Cookie items to include in the
63 request.
64 * **auth** - *(optional)* An authentication class to use when sending the
65 request.
66 * **proxies** - *(optional)* A dictionary mapping proxy keys to proxy URLs.
67 * **timeout** - *(optional)* The timeout configuration to use when sending
68 the request.
69 * **follow_redirects** - *(optional)* Enables or disables HTTP redirects.
70 * **verify** - *(optional)* SSL certificates (a.k.a CA bundle) used to
71 verify the identity of requested hosts. Either `True` (default CA bundle),
72 a path to an SSL certificate file, an `ssl.SSLContext`, or `False`
73 (which will disable verification).
74 * **cert** - *(optional)* An SSL certificate used by the requested host
75 to authenticate the client. Either a path to an SSL certificate file, or
76 two-tuple of (certificate file, key file), or a three-tuple of (certificate
77 file, key file, password).
78 * **trust_env** - *(optional)* Enables or disables usage of environment
79 variables for configuration.
81 **Returns:** `Response`
83 Usage:
85 ```
86 >>> import httpx
87 >>> response = httpx.request('GET', 'https://httpbin.org/get')
88 >>> response
89 <Response [200 OK]>
90 ```
91 """
92 with Client(
93 cookies=cookies,
94 proxies=proxies,
95 cert=cert,
96 verify=verify,
97 timeout=timeout,
98 trust_env=trust_env,
99 ) as client:
100 return client.request(
101 method=method,
102 url=url,
103 content=content,
104 data=data,
105 files=files,
106 json=json,
107 params=params,
108 headers=headers,
109 auth=auth,
110 follow_redirects=follow_redirects,
111 )
114@contextmanager
115def stream(
116 method: str,
117 url: URLTypes,
118 *,
119 params: typing.Optional[QueryParamTypes] = None,
120 content: typing.Optional[RequestContent] = None,
121 data: typing.Optional[RequestData] = None,
122 files: typing.Optional[RequestFiles] = None,
123 json: typing.Optional[typing.Any] = None,
124 headers: typing.Optional[HeaderTypes] = None,
125 cookies: typing.Optional[CookieTypes] = None,
126 auth: typing.Optional[AuthTypes] = None,
127 proxies: typing.Optional[ProxiesTypes] = None,
128 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
129 follow_redirects: bool = False,
130 verify: VerifyTypes = True,
131 cert: typing.Optional[CertTypes] = None,
132 trust_env: bool = True,
133) -> typing.Iterator[Response]:
134 """
135 Alternative to `httpx.request()` that streams the response body
136 instead of loading it into memory at once.
138 **Parameters**: See `httpx.request`.
140 See also: [Streaming Responses][0]
142 [0]: /quickstart#streaming-responses
143 """
144 with Client(
145 cookies=cookies,
146 proxies=proxies,
147 cert=cert,
148 verify=verify,
149 timeout=timeout,
150 trust_env=trust_env,
151 ) as client:
152 with client.stream(
153 method=method,
154 url=url,
155 content=content,
156 data=data,
157 files=files,
158 json=json,
159 params=params,
160 headers=headers,
161 auth=auth,
162 follow_redirects=follow_redirects,
163 ) as response:
164 yield response
167def get(
168 url: URLTypes,
169 *,
170 params: typing.Optional[QueryParamTypes] = None,
171 headers: typing.Optional[HeaderTypes] = None,
172 cookies: typing.Optional[CookieTypes] = None,
173 auth: typing.Optional[AuthTypes] = None,
174 proxies: typing.Optional[ProxiesTypes] = None,
175 follow_redirects: bool = False,
176 cert: typing.Optional[CertTypes] = None,
177 verify: VerifyTypes = True,
178 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
179 trust_env: bool = True,
180) -> Response:
181 """
182 Sends a `GET` request.
184 **Parameters**: See `httpx.request`.
186 Note that the `data`, `files`, `json` and `content` parameters are not available
187 on this function, as `GET` requests should not include a request body.
188 """
189 return request(
190 "GET",
191 url,
192 params=params,
193 headers=headers,
194 cookies=cookies,
195 auth=auth,
196 proxies=proxies,
197 follow_redirects=follow_redirects,
198 cert=cert,
199 verify=verify,
200 timeout=timeout,
201 trust_env=trust_env,
202 )
205def options(
206 url: URLTypes,
207 *,
208 params: typing.Optional[QueryParamTypes] = None,
209 headers: typing.Optional[HeaderTypes] = None,
210 cookies: typing.Optional[CookieTypes] = None,
211 auth: typing.Optional[AuthTypes] = None,
212 proxies: typing.Optional[ProxiesTypes] = None,
213 follow_redirects: bool = False,
214 cert: typing.Optional[CertTypes] = None,
215 verify: VerifyTypes = True,
216 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
217 trust_env: bool = True,
218) -> Response:
219 """
220 Sends an `OPTIONS` request.
222 **Parameters**: See `httpx.request`.
224 Note that the `data`, `files`, `json` and `content` parameters are not available
225 on this function, as `OPTIONS` requests should not include a request body.
226 """
227 return request(
228 "OPTIONS",
229 url,
230 params=params,
231 headers=headers,
232 cookies=cookies,
233 auth=auth,
234 proxies=proxies,
235 follow_redirects=follow_redirects,
236 cert=cert,
237 verify=verify,
238 timeout=timeout,
239 trust_env=trust_env,
240 )
243def head(
244 url: URLTypes,
245 *,
246 params: typing.Optional[QueryParamTypes] = None,
247 headers: typing.Optional[HeaderTypes] = None,
248 cookies: typing.Optional[CookieTypes] = None,
249 auth: typing.Optional[AuthTypes] = None,
250 proxies: typing.Optional[ProxiesTypes] = None,
251 follow_redirects: bool = False,
252 cert: typing.Optional[CertTypes] = None,
253 verify: VerifyTypes = True,
254 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
255 trust_env: bool = True,
256) -> Response:
257 """
258 Sends a `HEAD` request.
260 **Parameters**: See `httpx.request`.
262 Note that the `data`, `files`, `json` and `content` parameters are not available
263 on this function, as `HEAD` requests should not include a request body.
264 """
265 return request(
266 "HEAD",
267 url,
268 params=params,
269 headers=headers,
270 cookies=cookies,
271 auth=auth,
272 proxies=proxies,
273 follow_redirects=follow_redirects,
274 cert=cert,
275 verify=verify,
276 timeout=timeout,
277 trust_env=trust_env,
278 )
281def post(
282 url: URLTypes,
283 *,
284 content: typing.Optional[RequestContent] = None,
285 data: typing.Optional[RequestData] = None,
286 files: typing.Optional[RequestFiles] = None,
287 json: typing.Optional[typing.Any] = None,
288 params: typing.Optional[QueryParamTypes] = None,
289 headers: typing.Optional[HeaderTypes] = None,
290 cookies: typing.Optional[CookieTypes] = None,
291 auth: typing.Optional[AuthTypes] = None,
292 proxies: typing.Optional[ProxiesTypes] = None,
293 follow_redirects: bool = False,
294 cert: typing.Optional[CertTypes] = None,
295 verify: VerifyTypes = True,
296 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
297 trust_env: bool = True,
298) -> Response:
299 """
300 Sends a `POST` request.
302 **Parameters**: See `httpx.request`.
303 """
304 return request(
305 "POST",
306 url,
307 content=content,
308 data=data,
309 files=files,
310 json=json,
311 params=params,
312 headers=headers,
313 cookies=cookies,
314 auth=auth,
315 proxies=proxies,
316 follow_redirects=follow_redirects,
317 cert=cert,
318 verify=verify,
319 timeout=timeout,
320 trust_env=trust_env,
321 )
324def put(
325 url: URLTypes,
326 *,
327 content: typing.Optional[RequestContent] = None,
328 data: typing.Optional[RequestData] = None,
329 files: typing.Optional[RequestFiles] = None,
330 json: typing.Optional[typing.Any] = None,
331 params: typing.Optional[QueryParamTypes] = None,
332 headers: typing.Optional[HeaderTypes] = None,
333 cookies: typing.Optional[CookieTypes] = None,
334 auth: typing.Optional[AuthTypes] = None,
335 proxies: typing.Optional[ProxiesTypes] = None,
336 follow_redirects: bool = False,
337 cert: typing.Optional[CertTypes] = None,
338 verify: VerifyTypes = True,
339 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
340 trust_env: bool = True,
341) -> Response:
342 """
343 Sends a `PUT` request.
345 **Parameters**: See `httpx.request`.
346 """
347 return request(
348 "PUT",
349 url,
350 content=content,
351 data=data,
352 files=files,
353 json=json,
354 params=params,
355 headers=headers,
356 cookies=cookies,
357 auth=auth,
358 proxies=proxies,
359 follow_redirects=follow_redirects,
360 cert=cert,
361 verify=verify,
362 timeout=timeout,
363 trust_env=trust_env,
364 )
367def patch(
368 url: URLTypes,
369 *,
370 content: typing.Optional[RequestContent] = None,
371 data: typing.Optional[RequestData] = None,
372 files: typing.Optional[RequestFiles] = None,
373 json: typing.Optional[typing.Any] = None,
374 params: typing.Optional[QueryParamTypes] = None,
375 headers: typing.Optional[HeaderTypes] = None,
376 cookies: typing.Optional[CookieTypes] = None,
377 auth: typing.Optional[AuthTypes] = None,
378 proxies: typing.Optional[ProxiesTypes] = None,
379 follow_redirects: bool = False,
380 cert: typing.Optional[CertTypes] = None,
381 verify: VerifyTypes = True,
382 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
383 trust_env: bool = True,
384) -> Response:
385 """
386 Sends a `PATCH` request.
388 **Parameters**: See `httpx.request`.
389 """
390 return request(
391 "PATCH",
392 url,
393 content=content,
394 data=data,
395 files=files,
396 json=json,
397 params=params,
398 headers=headers,
399 cookies=cookies,
400 auth=auth,
401 proxies=proxies,
402 follow_redirects=follow_redirects,
403 cert=cert,
404 verify=verify,
405 timeout=timeout,
406 trust_env=trust_env,
407 )
410def delete(
411 url: URLTypes,
412 *,
413 params: typing.Optional[QueryParamTypes] = None,
414 headers: typing.Optional[HeaderTypes] = None,
415 cookies: typing.Optional[CookieTypes] = None,
416 auth: typing.Optional[AuthTypes] = None,
417 proxies: typing.Optional[ProxiesTypes] = None,
418 follow_redirects: bool = False,
419 cert: typing.Optional[CertTypes] = None,
420 verify: VerifyTypes = True,
421 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
422 trust_env: bool = True,
423) -> Response:
424 """
425 Sends a `DELETE` request.
427 **Parameters**: See `httpx.request`.
429 Note that the `data`, `files`, `json` and `content` parameters are not available
430 on this function, as `DELETE` requests should not include a request body.
431 """
432 return request(
433 "DELETE",
434 url,
435 params=params,
436 headers=headers,
437 cookies=cookies,
438 auth=auth,
439 proxies=proxies,
440 follow_redirects=follow_redirects,
441 cert=cert,
442 verify=verify,
443 timeout=timeout,
444 trust_env=trust_env,
445 )