'This is a "catch-all" way to be able to handle every HTTP method.
:param method_name: The name of the method being called:
xurllib_instance.OPTIONS will make method_name == \'OPTIONS\'.'

def __getattr__(self, method_name):

    def any_method(uri_opener, method, uri, data=None, headers=Headers(), cache=False, grep=True, cookies=True, error_handling=True, timeout=None, use_basic_auth=True, use_proxy=True, follow_redirects=False):
        "\n                                                :return:    An    HTTPResponse    object    that's    the    result    of    sending\n                                                                                    the    request    with    a    method    different    from    GET    or    POST.\n                                                "
        if (not isinstance(uri, URL)):
            raise TypeError('The    uri    parameter    of    any_method    must    be    of    url.URL    type.')
        if (not isinstance(headers, Headers)):
            raise TypeError('The    headers    parameter    of    any_method    must    be    of    Headers    type.')
        uri_opener.setup()
        max_retries = uri_opener.settings.get_max_retrys()
        new_connection = (True if (timeout is not None) else False)
        host = uri.get_domain()
        timeout = (uri_opener.get_timeout(host) if (timeout is None) else timeout)
        req = HTTPRequest(uri, data, cookies=cookies, cache=cache, method=method, error_handling=error_handling, retries=max_retries, timeout=timeout, new_connection=new_connection, use_basic_auth=use_basic_auth, follow_redirects=follow_redirects, use_proxy=True)
        req = uri_opener.add_headers(req, (headers or {}))
        return uri_opener.send(req, grep=grep)
    method_partial = functools.partial(any_method, self, method_name)
    method_partial.__doc__ = ('Send    %s    HTTP    request' % method_name)
    return method_partial
