diff --git a/gitlab/client.py b/gitlab/client.py index 98f690578..4ad6c8fb6 100644 --- a/gitlab/client.py +++ b/gitlab/client.py @@ -774,10 +774,10 @@ def http_request( raise - self._check_redirects(result) + self._check_redirects(result.response) if 200 <= result.status_code < 300: - return result + return result.response if (429 == result.status_code and obey_rate_limit) or ( result.status_code in gitlab.const.RETRYABLE_TRANSIENT_ERROR_CODES diff --git a/gitlab/http_backends/__init__.py b/gitlab/http_backends/__init__.py index 07b7e80c5..aa53d0a2f 100644 --- a/gitlab/http_backends/__init__.py +++ b/gitlab/http_backends/__init__.py @@ -2,6 +2,7 @@ Defines http backends for processing http requests """ -from .requests_backend import RequestsBackend +from .requests_backend import RequestsBackend, RequestsResponse DefaultBackend = RequestsBackend +DefaultResponse = RequestsResponse diff --git a/gitlab/http_backends/requests_backend.py b/gitlab/http_backends/requests_backend.py index 032597a57..0b310abc8 100644 --- a/gitlab/http_backends/requests_backend.py +++ b/gitlab/http_backends/requests_backend.py @@ -1,9 +1,36 @@ +from __future__ import annotations + from typing import Any, Dict, Optional, Union import requests +from requests.structures import CaseInsensitiveDict from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore +class RequestsResponse: + def __init__(self, response: requests.Response) -> None: + self._response: requests.Response = response + + @property + def response(self) -> requests.Response: + return self._response + + @property + def status_code(self) -> int: + return self._response.status_code + + @property + def headers(self) -> CaseInsensitiveDict[str]: + return self._response.headers + + @property + def content(self) -> bytes: + return self._response.content + + def json(self) -> Any: + return self._response.json() + + class RequestsBackend: def __init__(self, session: Optional[requests.Session] = None) -> None: self._client: requests.Session = session or requests.Session() @@ -22,8 +49,8 @@ def http_request( timeout: Optional[float] = None, verify: Optional[Union[bool, str]] = True, stream: Optional[bool] = False, - **kwargs: Any - ) -> requests.Response: + **kwargs: Any, + ) -> RequestsResponse: """Make HTTP request Args: @@ -40,7 +67,7 @@ def http_request( Returns: A requests Response object. """ - return self._client.request( + response: requests.Response = self._client.request( method=method, url=url, params=params, @@ -49,5 +76,6 @@ def http_request( stream=stream, verify=verify, json=json, - **kwargs + **kwargs, ) + return RequestsResponse(response=response) 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