Module mercadopago.http.http_client

Module: http_client

Expand source code
"""
Module: http_client
"""
import requests
from requests.adapters import HTTPAdapter
from urllib3.util import Retry


class HttpClient:
    """
    Default implementation to call all REST API's
    """

    def request(self, method, url, maxretries=None, **kwargs):  # pylint: disable=no-self-use
        """Makes a call to the API.

        All **kwargs are passed verbatim to ``requests.request``.
        """
        retry_strategy = Retry(
            total=maxretries,
            status_forcelist=[429, 500, 502, 503, 504]
        )
        http = requests.Session()
        http.mount("https://", HTTPAdapter(max_retries=retry_strategy))
        with http as session:
            api_result = session.request(method, url, **kwargs)
            response = {
                "status": api_result.status_code,
                "response": api_result.json()
            }

        return response

    def get(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a GET request to the API"""
        return self.request(
            "GET",
            url=url,
            headers=headers,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a POST request to the API"""
        return self.request(
            "POST",
            url=url,
            headers=headers,
            data=data,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a PUT request to the API"""
        return self.request(
            "PUT",
            url=url,
            headers=headers,
            data=data,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def delete(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a DELETE request to the API"""
        return self.request(
            "DELETE",
            url=url,
            headers=headers,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

Classes

class HttpClient

Default implementation to call all REST API's

Expand source code
class HttpClient:
    """
    Default implementation to call all REST API's
    """

    def request(self, method, url, maxretries=None, **kwargs):  # pylint: disable=no-self-use
        """Makes a call to the API.

        All **kwargs are passed verbatim to ``requests.request``.
        """
        retry_strategy = Retry(
            total=maxretries,
            status_forcelist=[429, 500, 502, 503, 504]
        )
        http = requests.Session()
        http.mount("https://", HTTPAdapter(max_retries=retry_strategy))
        with http as session:
            api_result = session.request(method, url, **kwargs)
            response = {
                "status": api_result.status_code,
                "response": api_result.json()
            }

        return response

    def get(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a GET request to the API"""
        return self.request(
            "GET",
            url=url,
            headers=headers,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a POST request to the API"""
        return self.request(
            "POST",
            url=url,
            headers=headers,
            data=data,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a PUT request to the API"""
        return self.request(
            "PUT",
            url=url,
            headers=headers,
            data=data,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

    def delete(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
        """Makes a DELETE request to the API"""
        return self.request(
            "DELETE",
            url=url,
            headers=headers,
            params=params,
            timeout=timeout,
            maxretries=maxretries,
        )

Methods

def delete(self, url, headers, params=None, timeout=None, maxretries=None)

Makes a DELETE request to the API

Expand source code
def delete(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
    """Makes a DELETE request to the API"""
    return self.request(
        "DELETE",
        url=url,
        headers=headers,
        params=params,
        timeout=timeout,
        maxretries=maxretries,
    )
def get(self, url, headers, params=None, timeout=None, maxretries=None)

Makes a GET request to the API

Expand source code
def get(self, url, headers, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
    """Makes a GET request to the API"""
    return self.request(
        "GET",
        url=url,
        headers=headers,
        params=params,
        timeout=timeout,
        maxretries=maxretries,
    )
def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None)

Makes a POST request to the API

Expand source code
def post(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
    """Makes a POST request to the API"""
    return self.request(
        "POST",
        url=url,
        headers=headers,
        data=data,
        params=params,
        timeout=timeout,
        maxretries=maxretries,
    )
def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None)

Makes a PUT request to the API

Expand source code
def put(self, url, headers, data=None, params=None, timeout=None, maxretries=None):  # pylint: disable=too-many-arguments
    """Makes a PUT request to the API"""
    return self.request(
        "PUT",
        url=url,
        headers=headers,
        data=data,
        params=params,
        timeout=timeout,
        maxretries=maxretries,
    )
def request(self, method, url, maxretries=None, **kwargs)

Makes a call to the API.

All **kwargs are passed verbatim to requests.request.

Expand source code
def request(self, method, url, maxretries=None, **kwargs):  # pylint: disable=no-self-use
    """Makes a call to the API.

    All **kwargs are passed verbatim to ``requests.request``.
    """
    retry_strategy = Retry(
        total=maxretries,
        status_forcelist=[429, 500, 502, 503, 504]
    )
    http = requests.Session()
    http.mount("https://", HTTPAdapter(max_retries=retry_strategy))
    with http as session:
        api_result = session.request(method, url, **kwargs)
        response = {
            "status": api_result.status_code,
            "response": api_result.json()
        }

    return response