def request(self, method, uri, params=None, data=None, headers=None, auth=None,<EOL>timeout=None, allow_redirects=False):
auth = auth or self.auth<EOL>headers = headers or {}<EOL>headers['<STR_LIT>'] = '<STR_LIT>'.format(<EOL>__version__,<EOL>platform.python_version(),<EOL>)<EOL>headers['<STR_LIT>'] = '<STR_LIT>'.format(__version__)<EOL>headers['<STR_LIT>'] = '<STR_LIT:utf-8>'<EOL>if method == '<STR_LIT:POST>' and '<STR_LIT:Content-Type>' not in headers:<EOL><INDENT>headers['<STR_LIT:Content-Type>'] = '<STR_LIT>'<EOL><DEDENT>if '<STR_LIT>' not in headers:<EOL><INDENT>headers['<STR_LIT>'] = '<STR_LIT:application/json>'<EOL><DEDENT>if self.region:<EOL><INDENT>head, tail = uri.split('<STR_LIT:.>', <NUM_LIT:1>)<EOL>if not tail.startswith(self.region):<EOL><INDENT>uri = '<STR_LIT:.>'.join([head, self.region, tail])<EOL><DEDENT><DEDENT>return self.http_client.request(<EOL>method,<EOL>uri,<EOL>params=params,<EOL>data=data,<EOL>headers=headers,<EOL>auth=auth,<EOL>timeout=timeout,<EOL>allow_redirects=allow_redirects<EOL>)<EOL>
Makes a request to the Twilio API using the configured http client
Authentication information is automatically added if none is provided

:param str method: HTTP Method
:param str uri: Fully qualified url
:param dict[str, str] params: Query string parameters
:param dict[str, str] data: POST body data
:param dict[str, str] headers: HTTP Headers
:param tuple(str, str) auth: Authentication
:param int timeout: Timeout in seconds
:param bool allow_redirects: Should the client follow redirects

:returns: Response from the Twilio API
:rtype: twilio.http.response.Response