Source code for contentful_management.webhook
from .resource import Resource
from .webhook_webhooks_call_proxy import WebhookWebhooksCallProxy
from .webhook_webhooks_health_proxy import WebhookWebhooksHealthProxy
"""
contentful_management.webhook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This module implements the Webhook class.
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/webhooks
:copyright: (c) 2018 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""
[docs]class Webhook(Resource):
"""
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/webhooks
"""
def __init__(self, item, **kwargs):
super(Webhook, self).__init__(item, **kwargs)
self.name = item.get('name', '')
self.url = item.get('url', '')
self.topics = item.get('topics', [])
self.http_basic_username = item.get('httpBasicUsername', '')
self.headers = item.get('headers', [])
self.filters = item.get('filters', [])
self.transformation = item.get('transformation', {})
[docs] @classmethod
def update_attributes_map(klass):
"""
Defines keys and default values for non-generic attributes.
"""
return {
'name': '',
'url': '',
'topics': [],
'http_basic_username': '',
'headers': [],
'filters': [],
'transformation': {}
}
[docs] @classmethod
def create_attributes(klass, attributes, previous_object=None):
"""
Attributes for webhook creation.
"""
result = super(Webhook, klass).create_attributes(attributes, previous_object)
if 'topics' not in result:
raise Exception("Topics ('topics') must be provided for this operation.")
return result
[docs] def calls(self):
"""
Provides access to call overview for the given webhook.
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/webhook-calls
:return: :class:`WebhookWebhooksCallProxy <contentful_management.webhook_webhooks_call_proxy.WebhookWebhooksCallProxy>` object.
:rtype: contentful.webhook_webhooks_call_proxy.WebhookWebhooksCallProxy
Usage:
>>> webhook_webhooks_call_proxy = webhook.calls()
<WebhookWebhooksCallProxy space_id="cfexampleapi" webhook_id="my_webhook">
"""
return WebhookWebhooksCallProxy(self._client, self.sys['space'].id, self.sys['id'])
[docs] def health(self):
"""
Provides access to health overview for the given webhook.
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/webhook-calls/webhook-health
:return: :class:`WebhookWebhooksHealthProxy <contentful_management.webhook_webhooks_health_proxy.WebhookWebhooksHealthProxy>` object.
:rtype: contentful.webhook_webhooks_health_proxy.WebhookWebhooksHealthProxy
Usage:
>>> webhook_webhooks_health_proxy = webhook.health()
<WebhookWebhooksHealthProxy space_id="cfexampleapi" webhook_id="my_webhook">
"""
return WebhookWebhooksHealthProxy(self._client, self.sys['space'].id, self.sys['id'])
[docs] def to_json(self):
"""
Returns the JSON representation of the webhook.
"""
result = super(Webhook, self).to_json()
result.update({
'name': self.name,
'url': self.url,
'topics': self.topics,
'httpBasicUsername': self.http_basic_username,
'headers': self.headers
})
if self.filters:
result.update({'filters': self.filters})
if self.transformation:
result.update({'transformation': self.transformation})
return result
def __repr__(self):
return "<Webhook[{0}] id='{1}'>".format(
self.name,
self.sys.get('id', '')
)