def repo_forked_handler(payload: Dict[str, Any]) -> List[Dict[str, str]]: repo_name = payload["repository"]["origin"]["name"] subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) body = BITBUCKET_FORK_BODY.format( display_name=payload["actor"]["displayName"], username=payload["actor"]["name"], fork_name=payload["repository"]["name"], fork_url=payload["repository"]["links"]["self"][0]["href"]) return [{"subject": subject, "body": body}]
def repo_modified_handler(payload: Dict[str, Any]) -> List[Dict[str, str]]: subject_new = BITBUCKET_TOPIC_TEMPLATE.format( repository_name=payload["new"]["name"]) body = BITBUCKET_REPO_UPDATED_CHANGED.format( actor=payload["actor"]["name"], change="name", repo_name=payload["old"]["name"], old=payload["old"]["name"], new=payload["new"]["name"] ) # As of writing this, the only change we'd be notified about is a name change. return [{"subject": subject_new, "body": body}]
def repo_modified_handler(payload: Dict[str, Any]) -> List[Dict[str, str]]: subject_new = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=payload["new"]["name"]) new_name = payload["new"]["name"] body = BITBUCKET_REPO_UPDATED_CHANGED.format( actor=get_user_name(payload), change="name", repo_name=payload["old"]["name"], old=payload["old"]["name"], new=new_name, ) # As of writing this, the only change we'd be notified about is a name change. punctuation = "." if new_name[-1] not in string.punctuation else "" body = f"{body}{punctuation}" return [{"subject": subject_new, "body": body}]
def repo_forked_handler( payload: WildValue, branches: Optional[str], include_title: Optional[str], ) -> List[Dict[str, str]]: repo_name = payload["repository"]["origin"]["name"].tame(check_string) subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) body = BITBUCKET_FORK_BODY.format( display_name=payload["actor"]["displayName"].tame(check_string), username=get_user_name(payload), fork_name=payload["repository"]["name"].tame(check_string), fork_url=payload["repository"]["links"]["self"][0]["href"].tame(check_string), ) return [{"subject": subject, "body": body}]
def repo_comment_handler(payload: Dict[str, Any], action: str) -> List[Dict[str, str]]: repo_name = payload["repository"]["name"] user_name = payload["actor"]["name"] subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) sha = payload["commit"] commit_url = payload["repository"]["links"]["self"][0][ "href"][:-6] # remove the "browse" at the end commit_url += "commits/%s" % (sha, ) body = get_commits_comment_action_message( user_name=user_name, action=action, commit_url=commit_url, sha=sha, message=payload["comment"]["text"]) return [{"subject": subject, "body": body}]
def repo_push_tag_data(payload: WildValue, change: WildValue) -> Dict[str, str]: event_type = change["type"].tame(check_string) repo_name = payload["repository"]["name"].tame(check_string) tag_name = change["ref"]["displayId"].tame(check_string) if event_type == "ADD": action = "pushed" elif event_type == "DELETE": action = "removed" else: message = "{}.{}".format(payload["eventKey"].tame(check_string), event_type) # nocoverage raise UnsupportedWebhookEventType(message) subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) body = get_push_tag_event_message(get_user_name(payload), tag_name, action=action) return {"subject": subject, "body": body}
def repo_push_tag_data(payload: Dict[str, Any], change: Dict[str, Any]) -> Dict[str, str]: event_type = change["type"] repo_name = payload["repository"]["name"] tag_name = change["ref"]["displayId"] if event_type == "ADD": action = "pushed" elif event_type == "DELETE": action = "removed" else: message = "%s.%s" % (payload["eventKey"], event_type) # nocoverage raise UnexpectedWebhookEventType("BitBucket Server", message) subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) body = get_push_tag_event_message(get_user_name(payload), tag_name, action=action) return {"subject": subject, "body": body}
def repo_comment_handler(payload: Dict[str, Any], action: str) -> List[Dict[str, str]]: repo_name = payload["repository"]["name"] subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) sha = payload["commit"] commit_url = payload["repository"]["links"]["self"][0]["href"][: -len("browse")] commit_url += f"commits/{sha}" message = payload["comment"]["text"] if action == "deleted their comment": message = f"~~{message}~~" body = get_commits_comment_action_message( user_name=get_user_name(payload), action=action, commit_url=commit_url, sha=sha, message=message, ) return [{"subject": subject, "body": body}]
def repo_comment_handler( payload: WildValue, action: str, branches: Optional[str], include_title: Optional[str], ) -> List[Dict[str, str]]: repo_name = payload["repository"]["name"].tame(check_string) subject = BITBUCKET_TOPIC_TEMPLATE.format(repository_name=repo_name) sha = payload["commit"].tame(check_string) commit_url = payload["repository"]["links"]["self"][0]["href"].tame( check_string)[:-len("browse")] commit_url += f"commits/{sha}" message = payload["comment"]["text"].tame(check_string) if action == "deleted their comment": message = f"~~{message}~~" body = get_commits_comment_action_message( user_name=get_user_name(payload), action=action, commit_url=commit_url, sha=sha, message=message, ) return [{"subject": subject, "body": body}]