Initial commit: Email alerts application
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
from typing import Dict, Optional, Tuple
|
||||
from twilio.http.response import Response
|
||||
from twilio.rest import Client
|
||||
|
||||
|
||||
class Domain(object):
|
||||
"""
|
||||
This represents at Twilio API subdomain.
|
||||
|
||||
Like, `api.twilio.com` or `lookups.twilio.com'.
|
||||
"""
|
||||
|
||||
def __init__(self, twilio: Client, base_url: str):
|
||||
self.twilio = twilio
|
||||
self.base_url = base_url
|
||||
|
||||
def absolute_url(self, uri: str) -> str:
|
||||
"""
|
||||
Converts a relative `uri` to an absolute url.
|
||||
:param string uri: The relative uri to make absolute.
|
||||
:return: An absolute url (based off this domain)
|
||||
"""
|
||||
return "{}/{}".format(self.base_url.strip("/"), uri.strip("/"))
|
||||
|
||||
def request(
|
||||
self,
|
||||
method: str,
|
||||
uri: str,
|
||||
params: Optional[Dict[str, object]] = None,
|
||||
data: Optional[Dict[str, object]] = None,
|
||||
headers: Optional[Dict[str, str]] = None,
|
||||
auth: Optional[Tuple[str, str]] = None,
|
||||
timeout: Optional[float] = None,
|
||||
allow_redirects: bool = False,
|
||||
) -> Response:
|
||||
"""
|
||||
Makes an HTTP request to this domain.
|
||||
:param method: The HTTP method.
|
||||
:param uri: The HTTP uri.
|
||||
:param params: Query parameters.
|
||||
:param data: The request body.
|
||||
:param headers: The HTTP headers.
|
||||
:param auth: Basic auth tuple of (username, password)
|
||||
:param timeout: The request timeout.
|
||||
:param allow_redirects: True if the client should follow HTTP
|
||||
redirects.
|
||||
"""
|
||||
url = self.absolute_url(uri)
|
||||
return self.twilio.request(
|
||||
method,
|
||||
url,
|
||||
params=params,
|
||||
data=data,
|
||||
headers=headers,
|
||||
auth=auth,
|
||||
timeout=timeout,
|
||||
allow_redirects=allow_redirects,
|
||||
)
|
||||
|
||||
async def request_async(
|
||||
self,
|
||||
method: str,
|
||||
uri: str,
|
||||
params: Optional[Dict[str, object]] = None,
|
||||
data: Optional[Dict[str, object]] = None,
|
||||
headers: Optional[Dict[str, str]] = None,
|
||||
auth: Optional[Tuple[str, str]] = None,
|
||||
timeout: Optional[float] = None,
|
||||
allow_redirects: bool = False,
|
||||
) -> Response:
|
||||
"""
|
||||
Makes an asynchronous HTTP request to this domain.
|
||||
:param method: The HTTP method.
|
||||
:param uri: The HTTP uri.
|
||||
:param params: Query parameters.
|
||||
:param data: The request body.
|
||||
:param headers: The HTTP headers.
|
||||
:param auth: Basic auth tuple of (username, password)
|
||||
:param timeout: The request timeout.
|
||||
:param allow_redirects: True if the client should follow HTTP
|
||||
redirects.
|
||||
"""
|
||||
url = self.absolute_url(uri)
|
||||
return await self.twilio.request_async(
|
||||
method,
|
||||
url,
|
||||
params=params,
|
||||
data=data,
|
||||
headers=headers,
|
||||
auth=auth,
|
||||
timeout=timeout,
|
||||
allow_redirects=allow_redirects,
|
||||
)
|
||||
Reference in New Issue
Block a user