Skip to content

Commit 16ef0a8

Browse files
author
Liora Milbaum
committed
refactor: RequestsResponse
1 parent 283e7cc commit 16ef0a8

File tree

3 files changed

+34
-19
lines changed

3 files changed

+34
-19
lines changed

gitlab/client.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -774,47 +774,51 @@ def http_request(
774774

775775
raise
776776

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

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

782-
if (429 == result.status_code and obey_rate_limit) or (
783-
result.status_code in gitlab.const.RETRYABLE_TRANSIENT_ERROR_CODES
782+
if (429 == result.response.status_code and obey_rate_limit) or (
783+
result.response.status_code
784+
in gitlab.const.RETRYABLE_TRANSIENT_ERROR_CODES
784785
and retry_transient_errors
785786
):
786787
# Response headers documentation:
787788
# https://docs.gitlab.com/ee/user/admin_area/settings/user_and_ip_rate_limits.html#response-headers
788789
if max_retries == -1 or cur_retries < max_retries:
789790
wait_time = 2**cur_retries * 0.1
790-
if "Retry-After" in result.headers:
791-
wait_time = int(result.headers["Retry-After"])
792-
elif "RateLimit-Reset" in result.headers:
793-
wait_time = int(result.headers["RateLimit-Reset"]) - time.time()
791+
if "Retry-After" in result.response.headers:
792+
wait_time = int(result.response.headers["Retry-After"])
793+
elif "RateLimit-Reset" in result.response.headers:
794+
wait_time = (
795+
int(result.response.headers["RateLimit-Reset"])
796+
- time.time()
797+
)
794798
cur_retries += 1
795799
time.sleep(wait_time)
796800
continue
797801

798-
error_message = result.content
802+
error_message = result.response.content
799803
try:
800-
error_json = result.json()
804+
error_json = result.response.json()
801805
for k in ("message", "error"):
802806
if k in error_json:
803807
error_message = error_json[k]
804808
except (KeyError, ValueError, TypeError):
805809
pass
806810

807-
if result.status_code == 401:
811+
if result.response.status_code == 401:
808812
raise gitlab.exceptions.GitlabAuthenticationError(
809-
response_code=result.status_code,
813+
response_code=result.response.status_code,
810814
error_message=error_message,
811-
response_body=result.content,
815+
response_body=result.response.content,
812816
)
813817

814818
raise gitlab.exceptions.GitlabHttpError(
815-
response_code=result.status_code,
819+
response_code=result.response.status_code,
816820
error_message=error_message,
817-
response_body=result.content,
821+
response_body=result.response.content,
818822
)
819823

820824
def http_get(

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: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@
44
from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore
55

66

7+
class RequestsResponse:
8+
def __init__(self, response: requests.Response) -> None:
9+
self._response: requests.Response = response
10+
11+
@property
12+
def response(self) -> requests.Response:
13+
return self._response
14+
15+
716
class RequestsBackend:
817
def __init__(self, session: Optional[requests.Session] = None) -> None:
918
self._client: requests.Session = session or requests.Session()
@@ -23,7 +32,7 @@ def http_request(
2332
verify: Optional[Union[bool, str]] = True,
2433
stream: Optional[bool] = False,
2534
**kwargs: Any
26-
) -> requests.Response:
35+
) -> RequestsResponse:
2736
"""Make HTTP request
2837
2938
Args:
@@ -40,7 +49,7 @@ def http_request(
4049
Returns:
4150
A requests Response object.
4251
"""
43-
return self._client.request(
52+
response: requests.Response = self._client.request(
4453
method=method,
4554
url=url,
4655
params=params,
@@ -51,3 +60,4 @@ def http_request(
5160
json=json,
5261
**kwargs
5362
)
63+
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