Webhooks

Github

Handle GitHub webhooks.

class app.controller.webhook.github.core.GitHubWebhookHandler(db_facade, config)

Encapsulate the handlers for all GitHub webhook events.

__init__(db_facade, config)

Give handlers access to the database.

handle(request_body, xhub_signature, payload)

Verify and handle the webhook event.

Parameters:
  • request_body (bytes) – Byte string of the request body
  • xhub_signature (str) – Hashed signature to validate
Return type:

Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]

Returns:

appropriate ResponseTuple depending on the validity and type of webhook

verify_hash(request_body, xhub_signature)

Verify if a webhook event comes from GitHub.

Parameters:
  • request_body (bytes) – Byte string of the request body
  • xhub_signature (str) – Hashed signature to validate
Returns:

Return True if the signature is valid, False otherwise

Define the abstract base class for a GitHub event handler.

class app.controller.webhook.github.events.base.GitHubEventHandler(db_facade)

Define the properties and methods needed for a GitHub event handler.

__init__(db_facade)

Give handler access to the database facade.

handle(payload)

Handle a GitHub event.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
supported_action_list

Provide a list of all actions this handler can handle.

Return type:List[str]

Handle GitHub membership events.

class app.controller.webhook.github.events.membership.MembershipEventHandler(db_facade)

Encapsulate the handler methods for GitHub membership events.

handle(payload)

Handle the event where a user is added or removed from a team.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
mem_added(github_id, selected_team, team_name, github_username)

Help membership function if payload action is added.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
mem_remove(github_id, selected_team, team_name)

Help membership function if payload action is removal.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
supported_action_list

Provide a list of all actions this handler can handle.

Return type:List[str]

Handle GitHub organization events.

class app.controller.webhook.github.events.organization.OrganizationEventHandler(db_facade)

Encapsulate the handler methods for GitHub organization events.

handle(payload)

Handle when a user is added, removed, or invited to an organization.

If the member is removed, they are removed as a user from rocket’s db if they have not been removed already.

If the member is added or invited, do nothing.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
handle_added(github_username, organization)

Help organization function if payload action is added.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
handle_invited(github_username, organization)

Help organization function if payload action is invited.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
handle_remove(member_list, github_id, github_username)

Help organization function if payload action is remove.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
supported_action_list

Provide a list of all actions this handler can handle.

Return type:List[str]

Handle GitHub team events.

class app.controller.webhook.github.events.team.TeamEventHandler(db_facade)

Encapsulate the handler methods for GitHub team events.

handle(payload)

Handle team events of the organization.

This event is fired when a team is created, deleted, edited, or added or removed from a repository.

If a team is created, add or overwrite a team in rocket’s db.

If a team is deleted, delete the team from rocket’s db if it exists.

If a team is edited, overwrite the team’s fields or create the team if necessary.

If the team is added or removed from a repository, do nothing for now.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
supported_action_list

Provide a list of all actions this handler can handle.

Return type:List[str]
team_added_to_repository(github_id, github_team_name, payload)

Help team function if payload action is added_to_repository.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
team_created(github_id, github_team_name, payload)

Help team function if payload action is created.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
team_deleted(github_id, github_team_name, payload)

Help team function if payload action is deleted.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
team_edited(github_id, github_team_name, payload)

Help team function if payload action is edited.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]
team_removed_from_repository(github_id, github_team_name, payload)

Help team function if payload action is removed_from_repository.

Return type:Tuple[Union[Dict[str, List[Dict[str, Any]]], str, Dict[str, Any]], int]

Slack