Skip to content

Commit c1eb547

Browse files
author
Liora Milbaum
committed
refactor: RequestsResponse
1 parent c7cf0d1 commit c1eb547

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

gitlab/client.py

+2-2
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

+2-1
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

+28-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,34 @@
11
from typing import Any, Dict, Optional, Union
22

33
import requests
4+
from requests.structures import CaseInsensitiveDict
45
from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore
56

67

8+
class RequestsResponse:
9+
def __init__(self, response: requests.Response) -> None:
10+
self._response: requests.Response = response
11+
12+
@property
13+
def response(self) -> requests.Response:
14+
return self._response
15+
16+
@property
17+
def status_code(self) -> int:
18+
return self._response.status_code
19+
20+
@property
21+
def headers(self) -> CaseInsensitiveDict[str]:
22+
return self._response.headers
23+
24+
@property
25+
def content(self) -> bytes:
26+
return self._response.content
27+
28+
def json(self) -> Any:
29+
return self._response.json()
30+
31+
732
class RequestsBackend:
833
def __init__(self, session: Optional[requests.Session] = None) -> None:
934
self._client: requests.Session = session or requests.Session()
@@ -23,7 +48,7 @@ def http_request(
2348
verify: Optional[Union[bool, str]] = True,
2449
stream: Optional[bool] = False,
2550
**kwargs: Any
26-
) -> requests.Response:
51+
) -> RequestsResponse:
2752
"""Make HTTP request
2853
2954
Args:
@@ -40,7 +65,7 @@ def http_request(
4065
Returns:
4166
A requests Response object.
4267
"""
43-
return self._client.request(
68+
response: requests.Response = self._client.request(
4469
method=method,
4570
url=url,
4671
params=params,
@@ -51,3 +76,4 @@ def http_request(
5176
json=json,
5277
**kwargs
5378
)
79+
return RequestsResponse(response=response)

0 commit comments

Comments
 (0)