Skip to content

Commit

Permalink
Merge pull request #69 from bobvanderlinden/pr-refactor-event-handling
Browse files Browse the repository at this point in the history
Clean up way to handle events
  • Loading branch information
probot-auto-merge[bot] committed Oct 13, 2018
2 parents b593d3c + 0bd7b7e commit 05ae503
Showing 1 changed file with 25 additions and 32 deletions.
57 changes: 25 additions & 32 deletions src/index.ts
Expand Up @@ -4,7 +4,7 @@ import { HandlerContext } from './models'
import Raven from 'raven'
import { RepositoryWorkers } from './repository-workers'
import sentryStream from 'bunyan-sentry-stream'
import { PullRequestReference } from './github-models'
import { RepositoryReference, PullRequestReference } from './github-models'

async function getHandlerContext (options: {app: Application, context: Context}): Promise<HandlerContext> {
const config = await loadConfig(options.context)
Expand Down Expand Up @@ -72,6 +72,18 @@ export = (app: Application) => {
console.error(`Error while processing pull request ${pullRequestName}:`, error)
}

async function handlePullRequests (app: Application, context: Context, repository: RepositoryReference, headSha: string, pullRequestNumbers: number[]) {
await useHandlerContext({ app, context }, async (handlerContext) => {
for (let pullRequestNumber of pullRequestNumbers) {
repositoryWorkers.queue(handlerContext, {
owner: repository.owner,
repo: repository.repo,
number: pullRequestNumber
})
}
})
}

app.on([
'pull_request.opened',
'pull_request.edited',
Expand All @@ -84,50 +96,31 @@ export = (app: Application) => {
'pull_request_review.edited',
'pull_request_review.dismissed'
], async context => {
await useHandlerContext({ app, context }, async (handlerContext) => {
repositoryWorkers.queue(handlerContext, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
number: context.payload.pull_request.number
})
})
await handlePullRequests(app, context, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name
}, context.payload.pull_request.head_sha, [context.payload.pull_request.number])
})

app.on([
'check_run.created',
'check_run.rerequested',
'check_run.requested_action'
], async context => {
await Raven.context({
extra: {
event: context.event
}
}, async () => {
await useHandlerContext({ app, context }, async (handlerContext) => {
for (const pullRequest of context.payload.check_run.pull_requests) {
repositoryWorkers.queue(handlerContext, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
number: pullRequest.number
})
}
})
})
await handlePullRequests(app, context, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name
}, context.payload.check_run.head_sha, context.payload.check_run.pull_requests.map((pullRequest: any) => pullRequest.number))
})

app.on([
'check_suite.completed',
'check_suite.requested',
'check_suite.rerequested'
], async context => {
await useHandlerContext({ app, context }, async (handlerContext) => {
for (const pullRequest of context.payload.check_suite.pull_requests) {
repositoryWorkers.queue(handlerContext, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
number: pullRequest.number
})
}
})
await handlePullRequests(app, context, {
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name
}, context.payload.check_suite.head_sha, context.payload.check_suite.pull_requests.map((pullRequest: any) => pullRequest.number))
})
}

0 comments on commit 05ae503

Please sign in to comment.