@classmethod
def request(cls, method, url, headers, params, data, timeout, proxies,
    verify, max_retries):
    """
        Main method to be implemented by HTTP clients.

        The returned data structure has the following fields:
        * `content`: string containing the response from the server
        * `status_code`: HTTP status code returned by the server

        Can raise the following exceptions:
        * `ClientError`: server cannot be contacted
        * `HttpTimeout`: connection timed out
        * `HTTPError`: unexpected HTTP response code
        """
    raise NotImplementedError(u'Must be implemented by HTTPClient subclasses.')
