def request()

in src/basket/base.py [0:0]


def request(method, action, data=None, json=None, token=None, params=None, headers=None):
    """Call the basket API with the supplied http method and data."""
    # send mock response for testing email addresses (bug 1261886)
    if data and "email" in data:
        if data["email"] == "success@example.com":
            return {"status": "ok"}
        elif data["email"] == "failure@example.com":
            raise BasketException("mock failure", status_code=400, code=errors.BASKET_MOCK_FAILURE)

    # newsletters should be comma-delimited
    if data and "newsletters" in data:
        if not isinstance(data["newsletters"], str):
            data["newsletters"] = ",".join(data["newsletters"])

    if action in URLS:
        url = f"{BASKET_URL}{URLS[action]}"
    else:
        url = basket_url(action, token)

    try:
        res = requests.request(method, url, data=data, json=json, params=params, headers=headers, timeout=BASKET_TIMEOUT)
    except requests.exceptions.ConnectionError:
        raise BasketNetworkException("Error connecting to basket")
    except requests.exceptions.Timeout:
        raise BasketNetworkException("Timeout connecting to basket")
    return parse_response(res)