Skip to content

Commit 1c0e1d6

Browse files
author
Liora Milbaum
committed
refactor: RequestsResponse
1 parent 43c2dda commit 1c0e1d6

File tree

4 files changed

+33
-5
lines changed

4 files changed

+33
-5
lines changed

.github/workflows/test.yml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
unit:
2323
runs-on: ${{ matrix.os }}
2424
strategy:
25+
fail-fast: false
2526
matrix:
2627
os: [ubuntu-latest]
2728
python:

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)