def handle_webhook(self): """ Handle BitBucket events for push. BitBucket doesn't have a separate event for creation/deletion, instead it sets the new attribute (null if it is a deletion) and the old attribute (null if it is a creation). """ event = self.request.META.get(BITBUCKET_EVENT_HEADER, BITBUCKET_PUSH) webhook_bitbucket.send(Project, project=self.project, data=self.request.data, event=event) if event == BITBUCKET_PUSH: try: data = self.request.data changes = data['push']['changes'] branches = [] for change in changes: old = change['old'] new = change['new'] # Normal push to master if old is not None and new is not None: branches.append(new['name']) # BitBuck returns an array of changes rather than # one webhook per change. If we have at least one normal push # we don't trigger the sync versions, because that # will be triggered with the normal push. if branches: return self.get_response_push(self.project, branches) return self.sync_versions(self.project) except KeyError: raise ParseError('Invalid request') return None
def handle_webhook(self, request, project, data=None): # Get event and trigger other webhook events event = request.META.get('HTTP_X_EVENT_KEY', BITBUCKET_PUSH) webhook_bitbucket.send(Project, project=project, data=data, event=event) # Handle push events and trigger builds if event == BITBUCKET_PUSH: try: changes = data['push']['changes'] branches = [change['new']['name'] for change in changes] return self.get_response_push(project, branches) except KeyError: raise ParseError('Invalid request')
def handle_webhook(self): # Get event and trigger other webhook events event = self.request.META.get('HTTP_X_EVENT_KEY', BITBUCKET_PUSH) webhook_bitbucket.send(Project, project=self.project, data=self.request.data, event=event) # Handle push events and trigger builds if event == BITBUCKET_PUSH: try: changes = self.request.data['push']['changes'] branches = [change['new']['name'] for change in changes] return self.get_response_push(self.project, branches) except KeyError: raise ParseError('Invalid request')
def handle_webhook(self): """ Handle BitBucket events for push. BitBucket doesn't have a separate event for creation/deletion, instead it sets the new attribute (null if it is a deletion) and the old attribute (null if it is a creation). """ event = self.request.META.get(BITBUCKET_EVENT_HEADER, BITBUCKET_PUSH) webhook_bitbucket.send( Project, project=self.project, data=self.request.data, event=event, ) if event == BITBUCKET_PUSH: try: data = self.request.data changes = data['push']['changes'] branches = [] for change in changes: old = change['old'] new = change['new'] # Normal push to master if old is not None and new is not None: branches.append(new['name']) # BitBuck returns an array of changes rather than # one webhook per change. If we have at least one normal push # we don't trigger the sync versions, because that # will be triggered with the normal push. if branches: return self.get_response_push(self.project, branches) return self.sync_versions(self.project) except KeyError: raise ParseError('Invalid request') return None