def request(self, method, url, params=None, data=None, headers=None, auth=None, timeout=None,<EOL>allow_redirects=False):
kwargs = {<EOL>'<STR_LIT>': method.upper(),<EOL>'<STR_LIT:url>': url,<EOL>'<STR_LIT>': params,<EOL>'<STR_LIT:data>': data,<EOL>'<STR_LIT>': headers,<EOL>'<STR_LIT>': auth,<EOL>'<STR_LIT>': self.request_hooks<EOL>}<EOL>if params:<EOL><INDENT>_logger.info('<STR_LIT>'.format(query=urlencode(params), **kwargs))<EOL>_logger.info('<STR_LIT>'.format(**kwargs))<EOL><DEDENT>else:<EOL><INDENT>_logger.info('<STR_LIT>'.format(**kwargs))<EOL><DEDENT>if data:<EOL><INDENT>_logger.info('<STR_LIT>'.format(**kwargs))<EOL><DEDENT>self.last_response = None<EOL>session = self.session or Session()<EOL>request = Request(**kwargs)<EOL>self.last_request = TwilioRequest(**kwargs)<EOL>prepped_request = session.prepare_request(request)<EOL>response = session.send(<EOL>prepped_request,<EOL>allow_redirects=allow_redirects,<EOL>timeout=timeout,<EOL>)<EOL>_logger.info('<STR_LIT>'.format(method=method, status=response.status_code, text=response.text))<EOL>self.last_response = Response(int(response.status_code), response.text)<EOL>return self.last_response<EOL>
Make an HTTP Request with parameters provided.

:param str method: The HTTP method to use
:param str url: The URL to request
:param dict params: Query parameters to append to the URL
:param dict data: Parameters to go in the body of the HTTP request
:param dict headers: HTTP Headers to send with the request
:param tuple auth: Basic Auth arguments
:param float timeout: Socket/Read timeout for the request
:param boolean allow_redirects: Whether or not to allow redirects
See the requests documentation for explanation of all these parameters

:return: An http response
:rtype: A :class:`Response <twilio.rest.http.response.Response>` object