Skip to content

Commit d746811

Browse files
authored
Add API failure handling/logging (#92)
* Add API failure handling/logging
1 parent c72e3d7 commit d746811

2 files changed

Lines changed: 140 additions & 82 deletions

File tree

dist/index.js

Lines changed: 72 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -8755,27 +8755,39 @@ class IssueProcessor {
87558755
listIssueComments(issueNumber, sinceDate) {
87568756
return __awaiter(this, void 0, void 0, function* () {
87578757
// find any comments since date on the given issue
8758-
const comments = yield this.client.issues.listComments({
8759-
owner: github.context.repo.owner,
8760-
repo: github.context.repo.repo,
8761-
issue_number: issueNumber,
8762-
since: sinceDate
8763-
});
8764-
return comments.data;
8758+
try {
8759+
const comments = yield this.client.issues.listComments({
8760+
owner: github.context.repo.owner,
8761+
repo: github.context.repo.repo,
8762+
issue_number: issueNumber,
8763+
since: sinceDate
8764+
});
8765+
return comments.data;
8766+
}
8767+
catch (error) {
8768+
core.error(`List issue comments error: ${error.message}`);
8769+
return Promise.resolve([]);
8770+
}
87658771
});
87668772
}
87678773
// grab issues from github in baches of 100
87688774
getIssues(page) {
87698775
return __awaiter(this, void 0, void 0, function* () {
8770-
const issueResult = yield this.client.issues.listForRepo({
8771-
owner: github.context.repo.owner,
8772-
repo: github.context.repo.repo,
8773-
state: 'open',
8774-
labels: this.options.onlyLabels,
8775-
per_page: 100,
8776-
page
8777-
});
8778-
return issueResult.data;
8776+
try {
8777+
const issueResult = yield this.client.issues.listForRepo({
8778+
owner: github.context.repo.owner,
8779+
repo: github.context.repo.repo,
8780+
state: 'open',
8781+
labels: this.options.onlyLabels,
8782+
per_page: 100,
8783+
page
8784+
});
8785+
return issueResult.data;
8786+
}
8787+
catch (error) {
8788+
core.error(`Get issues for repo error: ${error.message}`);
8789+
return Promise.resolve([]);
8790+
}
87798791
});
87808792
}
87818793
// Mark an issue as stale with a comment and a label
@@ -8791,18 +8803,28 @@ class IssueProcessor {
87918803
if (this.options.debugOnly) {
87928804
return;
87938805
}
8794-
yield this.client.issues.createComment({
8795-
owner: github.context.repo.owner,
8796-
repo: github.context.repo.repo,
8797-
issue_number: issue.number,
8798-
body: staleMessage
8799-
});
8800-
yield this.client.issues.addLabels({
8801-
owner: github.context.repo.owner,
8802-
repo: github.context.repo.repo,
8803-
issue_number: issue.number,
8804-
labels: [staleLabel]
8805-
});
8806+
try {
8807+
yield this.client.issues.createComment({
8808+
owner: github.context.repo.owner,
8809+
repo: github.context.repo.repo,
8810+
issue_number: issue.number,
8811+
body: staleMessage
8812+
});
8813+
}
8814+
catch (error) {
8815+
core.error(`Error creating a comment: ${error.message}`);
8816+
}
8817+
try {
8818+
yield this.client.issues.addLabels({
8819+
owner: github.context.repo.owner,
8820+
repo: github.context.repo.repo,
8821+
issue_number: issue.number,
8822+
labels: [staleLabel]
8823+
});
8824+
}
8825+
catch (error) {
8826+
core.error(`Error adding a label: ${error.message}`);
8827+
}
88068828
});
88078829
}
88088830
// Close an issue based on staleness
@@ -8814,12 +8836,17 @@ class IssueProcessor {
88148836
if (this.options.debugOnly) {
88158837
return;
88168838
}
8817-
yield this.client.issues.update({
8818-
owner: github.context.repo.owner,
8819-
repo: github.context.repo.repo,
8820-
issue_number: issue.number,
8821-
state: 'closed'
8822-
});
8839+
try {
8840+
yield this.client.issues.update({
8841+
owner: github.context.repo.owner,
8842+
repo: github.context.repo.repo,
8843+
issue_number: issue.number,
8844+
state: 'closed'
8845+
});
8846+
}
8847+
catch (error) {
8848+
core.error(`Error updating an issue: ${error.message}`);
8849+
}
88238850
});
88248851
}
88258852
// Remove a label from an issue
@@ -8831,12 +8858,17 @@ class IssueProcessor {
88318858
if (this.options.debugOnly) {
88328859
return;
88338860
}
8834-
yield this.client.issues.removeLabel({
8835-
owner: github.context.repo.owner,
8836-
repo: github.context.repo.repo,
8837-
issue_number: issue.number,
8838-
name: encodeURIComponent(label) // A label can have a "?" in the name
8839-
});
8861+
try {
8862+
yield this.client.issues.removeLabel({
8863+
owner: github.context.repo.owner,
8864+
repo: github.context.repo.repo,
8865+
issue_number: issue.number,
8866+
name: encodeURIComponent(label) // A label can have a "?" in the name
8867+
});
8868+
}
8869+
catch (error) {
8870+
core.error(`Error removing a label: ${error.message}`);
8871+
}
88408872
});
88418873
}
88428874
// returns the creation date of a given label on an issue (or nothing if no label existed)

src/IssueProcessor.ts

Lines changed: 68 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -268,28 +268,38 @@ export class IssueProcessor {
268268
sinceDate: string
269269
): Promise<Comment[]> {
270270
// find any comments since date on the given issue
271-
const comments = await this.client.issues.listComments({
272-
owner: github.context.repo.owner,
273-
repo: github.context.repo.repo,
274-
issue_number: issueNumber,
275-
since: sinceDate
276-
});
277-
278-
return comments.data;
271+
try {
272+
const comments = await this.client.issues.listComments({
273+
owner: github.context.repo.owner,
274+
repo: github.context.repo.repo,
275+
issue_number: issueNumber,
276+
since: sinceDate
277+
});
278+
return comments.data;
279+
} catch (error) {
280+
core.error(`List issue comments error: ${error.message}`);
281+
return Promise.resolve([]);
282+
}
279283
}
280284

281285
// grab issues from github in baches of 100
282286
private async getIssues(page: number): Promise<Issue[]> {
283-
const issueResult: OctoKitIssueList = await this.client.issues.listForRepo({
284-
owner: github.context.repo.owner,
285-
repo: github.context.repo.repo,
286-
state: 'open',
287-
labels: this.options.onlyLabels,
288-
per_page: 100,
289-
page
290-
});
291-
292-
return issueResult.data;
287+
try {
288+
const issueResult: OctoKitIssueList = await this.client.issues.listForRepo(
289+
{
290+
owner: github.context.repo.owner,
291+
repo: github.context.repo.repo,
292+
state: 'open',
293+
labels: this.options.onlyLabels,
294+
per_page: 100,
295+
page
296+
}
297+
);
298+
return issueResult.data;
299+
} catch (error) {
300+
core.error(`Get issues for repo error: ${error.message}`);
301+
return Promise.resolve([]);
302+
}
293303
}
294304

295305
// Mark an issue as stale with a comment and a label
@@ -313,19 +323,27 @@ export class IssueProcessor {
313323
return;
314324
}
315325

316-
await this.client.issues.createComment({
317-
owner: github.context.repo.owner,
318-
repo: github.context.repo.repo,
319-
issue_number: issue.number,
320-
body: staleMessage
321-
});
326+
try {
327+
await this.client.issues.createComment({
328+
owner: github.context.repo.owner,
329+
repo: github.context.repo.repo,
330+
issue_number: issue.number,
331+
body: staleMessage
332+
});
333+
} catch (error) {
334+
core.error(`Error creating a comment: ${error.message}`);
335+
}
322336

323-
await this.client.issues.addLabels({
324-
owner: github.context.repo.owner,
325-
repo: github.context.repo.repo,
326-
issue_number: issue.number,
327-
labels: [staleLabel]
328-
});
337+
try {
338+
await this.client.issues.addLabels({
339+
owner: github.context.repo.owner,
340+
repo: github.context.repo.repo,
341+
issue_number: issue.number,
342+
labels: [staleLabel]
343+
});
344+
} catch (error) {
345+
core.error(`Error adding a label: ${error.message}`);
346+
}
329347
}
330348

331349
// Close an issue based on staleness
@@ -342,12 +360,16 @@ export class IssueProcessor {
342360
return;
343361
}
344362

345-
await this.client.issues.update({
346-
owner: github.context.repo.owner,
347-
repo: github.context.repo.repo,
348-
issue_number: issue.number,
349-
state: 'closed'
350-
});
363+
try {
364+
await this.client.issues.update({
365+
owner: github.context.repo.owner,
366+
repo: github.context.repo.repo,
367+
issue_number: issue.number,
368+
state: 'closed'
369+
});
370+
} catch (error) {
371+
core.error(`Error updating an issue: ${error.message}`);
372+
}
351373
}
352374

353375
// Remove a label from an issue
@@ -364,12 +386,16 @@ export class IssueProcessor {
364386
return;
365387
}
366388

367-
await this.client.issues.removeLabel({
368-
owner: github.context.repo.owner,
369-
repo: github.context.repo.repo,
370-
issue_number: issue.number,
371-
name: encodeURIComponent(label) // A label can have a "?" in the name
372-
});
389+
try {
390+
await this.client.issues.removeLabel({
391+
owner: github.context.repo.owner,
392+
repo: github.context.repo.repo,
393+
issue_number: issue.number,
394+
name: encodeURIComponent(label) // A label can have a "?" in the name
395+
});
396+
} catch (error) {
397+
core.error(`Error removing a label: ${error.message}`);
398+
}
373399
}
374400

375401
// returns the creation date of a given label on an issue (or nothing if no label existed)

0 commit comments

Comments
 (0)