def parse(self, signature, payload): if isinstance(payload, text_type): payload = payload.encode('ascii') if re.search(b"[^A-Za-z0-9+=/\n]", payload): raise InvalidSignatureError("payload contains illegal characters") self.__validate_signature(signature, payload) attributes = XmlUtil.dict_from_xml(base64.decodestring(payload)) return WebhookNotification(self.gateway, attributes['notification'])
def parse(request): form = WebhookParseForm(request.DATA) if not form.is_valid(): raise FormError(form.errors) # Parse the gateway without doing a validation on this server. # The validation has happened on the solitude-auth server. gateway = get_client().Configuration.instantiate().gateway() payload = base64.decodestring(form.cleaned_data['bt_payload']) attributes = XmlUtil.dict_from_xml(payload) parsed = WebhookNotification(gateway, attributes['notification']) log.info('Received webhook: {p.kind}.'.format(p=parsed)) debug_log.debug(parsed) processor = Processor(parsed) processor.process() data = processor.data return Response(data, status=200 if data else 204)
def notification(**kwargs): data = {'kind': 'test', 'subject': {}} data.update(kwargs) return WebhookNotification(None, data)
def parse(self, signature, payload): self.__validate_signature(signature, payload) attributes = XmlUtil.dict_from_xml(base64.decodestring(payload)) return WebhookNotification(self.gateway, attributes['notification'])