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

+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

+32-4
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)