mirror of
https://github.com/zhigang1992/probot.git
synced 2026-06-14 18:08:58 +08:00
This replaces all internal references to "robot" with "app" or "Application". There should be no functional change in public APIs, but may cause some issues for anyone using internal APIs.
1.4 KiB
1.4 KiB
next
| next |
|---|
| docs/extensions.md |
Pagination
Many GitHub API endpoints are paginated. The github.paginate method can be used to get each page of the results.
module.exports = app => {
app.on('issues.opened', context => {
context.github.paginate(
context.github.issues.getAll(context.repo()),
res => {
res.data.issues.forEach(issue => {
context.log('Issue: %s', issue.title)
})
}
)
})
}
Accumulating pages
The return value of the github.paginate callback will be used to accumulate results.
module.exports = app => {
app.on('issues.opened', async context => {
const allIssues = await context.github.paginate(
context.github.issues.getAll(context.repo()),
res => res.data
)
console.log(allIssues)
})
}
Early exit
Sometimes it is desirable to stop fetching pages after a certain condition has been satisfied. A second argument, done, is provided to the callback and can be used to stop pagination. After done is invoked, no additional pages will be fetched.
module.exports = app => {
app.on('issues.opened', context => {
context.github.paginate(
context.github.issues.getAll(context.repo()),
(res, done) => {
for (let issue of res.data) {
if (issue.body.includes('something')) {
console.log('found it:', issue)
done()
break
}
}
}
)
})
}