Skip to content

Commit 7d9ce0d

Browse files
author
Liora Milbaum
authored
refactor: move Response object to backends (#2420)
1 parent 43c2dda commit 7d9ce0d

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

gitlab/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,10 +774,10 @@ def http_request(
774774

775775
raise
776776

777-
self._check_redirects(result)
777+
self._check_redirects(result.response)
778778

779779
if 200 <= result.status_code < 300:
780-
return result
780+
return result.response
781781

782782
if (429 == result.status_code and obey_rate_limit) or (
783783
result.status_code in gitlab.const.RETRYABLE_TRANSIENT_ERROR_CODES

gitlab/http_backends/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Defines http backends for processing http requests
33
"""
44

5-
from .requests_backend import RequestsBackend
5+
from .requests_backend import RequestsBackend, RequestsResponse
66

77
DefaultBackend = RequestsBackend
8+
DefaultResponse = RequestsResponse

gitlab/http_backends/requests_backend.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
1+
from __future__ import annotations
2+
13
from typing import Any, Dict, Optional, Union
24

35
import requests
6+
from requests.structures import CaseInsensitiveDict
47
from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore
58

69

10+
class RequestsResponse:
11+
def __init__(self, response: requests.Response) -> None:
12+
self._response: requests.Response = response
13+
14+
@property
15+
def response(self) -> requests.Response:
16+
return self._response
17+
18+
@property
19+
def status_code(self) -> int:
20+
return self._response.status_code
21+
22+
@property
23+
def headers(self) -> CaseInsensitiveDict[str]:
24+
return self._response.headers
25+
26+
@property
27+
def content(self) -> bytes:
28+
return self._response.content
29+
30+
def json(self) -> Any:
31+
return self._response.json()
32+
33+
734
class RequestsBackend:
835
def __init__(self, session: Optional[requests.Session] = None) -> None:
936
self._client: requests.Session = session or requests.Session()
@@ -22,8 +49,8 @@ def http_request(
2249
timeout: Optional[float] = None,
2350
verify: Optional[Union[bool, str]] = True,
2451
stream: Optional[bool] = False,
25-
**kwargs: Any
26-
) -> requests.Response:
52+
**kwargs: Any,
53+
) -> RequestsResponse:
2754
"""Make HTTP request
2855
2956
Args:
@@ -40,7 +67,7 @@ def http_request(
4067
Returns:
4168
A requests Response object.
4269
"""
43-
return self._client.request(
70+
response: requests.Response = self._client.request(
4471
method=method,
4572
url=url,
4673
params=params,
@@ -49,5 +76,6 @@ def http_request(
4976
stream=stream,
5077
verify=verify,
5178
json=json,
52-
**kwargs
79+
**kwargs,
5380
)
81+
return RequestsResponse(response=response)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy