"""
Handles /webhooks endpoint
Doc: https://developers.mailersend.com/api/v1/webhooks.html
"""
import requests
from mailersend.base import base
data = {}
class NewWebhook(base.NewAPIClient):
"""
Instantiates the /webhooks endpoint object
"""
def __init__(self):
"""
NewWebhook constructor
"""
pass
def get_webhooks(self, domain_id):
"""
Returns a JSON response from the MailerSend API
@params:
domain_id (str): A domain ID
"""
request = requests.get(
f"{self.api_base}/webhooks",
headers=self.headers_default,
json={"domain_id": domain_id},
)
return request.text
def get_webhook_by_id(self, webhook_id):
"""
Returns a JSON response from the MailerSend API
@params:
webhook_id (str): A webhook ID
"""
request = requests.get(
f"{self.api_base}/webhooks/{webhook_id}", headers=self.headers_default
)
return request.text
def set_webhook_url(self, webhook_url):
"""
Sets the webhook 'url' field
@params:
webhook_url (str): A webhook URL
"""
data["url"] = webhook_url
def set_webhook_name(self, webhook_name):
"""
Sets the webhook 'name' field
@params:
webhook_name (str): A webhook name
"""
data["name"] = webhook_name
def set_webhook_events(self, events):
"""
Sets the webhook 'events' field
@params:
events (list): A list containing valid events
"""
data["events"] = events
def set_webhook_enabled(self, enabled=True):
"""
Sets the webhook 'enabled' status field
@params:
enabled (bool): Controls webhook status
"""
data["enabled"] = enabled
def set_webhook_domain(self, domain_id):
"""
Sets the webhook 'domain_id' status field
@params:
domain_id (str): A valid domain ID
"""
data["domain_id"] = domain_id
def update_webhook(self, webhook_id, key, value):
"""
Updates a webhook setting
@params:
webhook_id (str): A valid webhook ID
key (str): A setting key
value (str): Corresponding keys value
"""
request = requests.put(
f"{self.api_base}/webhooks/{webhook_id}",
headers=self.headers_default,
json={f"{key}": value},
)
return request.text
def delete_webhook(self, webhook_id):
"""
Returns a JSON response from the MailerSend API
@params:
webhook_id (str): A valid webhook ID
"""
request = requests.delete(
f"{self.api_base}/webhooks/{webhook_id}", headers=self.headers_default
)
return request.text
def create_webhook(self):
"""
Returns a JSON response from the MailerSend API
"""
request = requests.post(
f"{self.api_base}/webhooks", headers=self.headers_default, json=data
)
return request.text