Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d34a076

Browse files
authoredAug 13, 2021
Merge pull request #73 from afrisalyp/github-api-changes
Support new github api changes.
2 parents 5076813 + cd2bffa commit d34a076

File tree

4 files changed

+31
-30
lines changed

4 files changed

+31
-30
lines changed
 

‎package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
},
2727
"homepage": "https://gitlab.com/luettich/processor#README",
2828
"dependencies": {
29+
"@octokit/rest": "^18.9.0",
2930
"axios": "^0.19.0",
3031
"circular-json": "^0.5.7",
3132
"config": "^1.30.0",
3233
"dynamoose": "^1.11.1",
3334
"fs-extra": "^7.0.0",
3435
"get-parameter-names": "^0.3.0",
35-
"github": "^12.1.0",
3636
"global-request-logger": "^0.1.1",
3737
"joi": "^13.4.0",
3838
"jwt-decode": "^2.2.0",
@@ -51,7 +51,6 @@
5151
"winston": "^2.4.3"
5252
},
5353
"devDependencies": {
54-
"@octokit/rest": "^15.10.0",
5554
"chai": "^4.1.2",
5655
"eslint-config-topcoder": "^2.0.0",
5756
"eslint-plugin-babel": "^4.1.2",

‎services/GithubService.js

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@
1212
const config = require('config');
1313
const _ = require('lodash');
1414
const Joi = require('joi');
15-
const GitHubApi = require('github');
15+
const superagent = require('superagent');
16+
const superagentPromise = require('superagent-promise');
17+
const {Octokit} = require('@octokit/rest');
1618
const logger = require('../utils/logger');
1719
const errors = require('../utils/errors');
1820
const helper = require('../utils/helper');
1921

22+
const request = superagentPromise(superagent, Promise);
23+
2024
const copilotUserSchema = Joi.object().keys({
2125
accessToken: Joi.string().required(),
2226
userProviderId: Joi.number().required(),
@@ -44,12 +48,10 @@ function _parseRepoUrl(fullName) {
4448
*/
4549
async function _authenticate(accessToken) {
4650
try {
47-
const github = new GitHubApi();
48-
github.authenticate({
49-
type: 'oauth',
50-
token: accessToken
51+
const octokit = new Octokit({
52+
auth: accessToken
5153
});
52-
return github;
54+
return octokit.rest;
5355
} catch (err) {
5456
throw errors.convertGitHubError(err, 'Failed to authenticate to Github using access token of copilot.');
5557
}
@@ -66,13 +68,11 @@ async function _authenticate(accessToken) {
6668
*/
6769
async function _removeAssignees(github, owner, repo, number, assignees) {
6870
try {
69-
await github.issues.removeAssigneesFromIssue({
71+
await github.issues.removeAssignees({
7072
owner,
7173
repo,
72-
number,
73-
body: {
74-
assignees
75-
}
74+
issue_number: number,
75+
assignees
7676
});
7777
} catch (err) {
7878
throw errors.convertGitHubError(err, 'Error occurred during remove assignees from issue.');
@@ -81,13 +81,16 @@ async function _removeAssignees(github, owner, repo, number, assignees) {
8181

8282
/**
8383
* gets the username of given user id
84-
* @param {Object} github the instance of github
8584
* @param {Number} id the user id
8685
* @returns {string} username if found
8786
*/
88-
async function _getUsernameById(github, id) {
89-
const user = await github.users.getById({id});
90-
return user ? user.data.login : null;
87+
async function _getUsernameById(id) {
88+
const user = await request
89+
.get(`https://api.github.com/user/${id}`)
90+
.end()
91+
.then((res) => res.body);
92+
93+
return user ? user.login : null;
9194
}
9295

9396
/**
@@ -102,7 +105,7 @@ async function updateIssue(copilot, repoFullName, number, title) {
102105
const github = await _authenticate(copilot.accessToken);
103106
const {owner, repo} = _parseRepoUrl(repoFullName);
104107
try {
105-
await github.issues.edit({owner, repo, number, title});
108+
await github.issues.update({owner, repo, issue_number: number, title});
106109
} catch (err) {
107110
throw errors.convertGitHubError(err, 'Error occurred during updating issue.');
108111
}
@@ -128,13 +131,13 @@ async function assignUser(copilot, repoFullName, number, user) {
128131
const github = await _authenticate(copilot.accessToken);
129132
const {owner, repo} = _parseRepoUrl(repoFullName);
130133
try {
131-
const issue = await github.issues.get({owner, repo, number});
134+
const issue = await github.issues.get({owner, repo, issue_number: number});
132135

133136
const oldAssignees = _(issue.data.assignees).map('login').without(user).value();
134137
if (oldAssignees && oldAssignees.length > 0) {
135138
await _removeAssignees(github, owner, repo, number, oldAssignees);
136139
}
137-
await github.issues.addAssigneesToIssue({owner, repo, number, assignees: [user]});
140+
await github.issues.addAssignees({owner, repo, issue_number: number, assignees: [user]});
138141
} catch (err) {
139142
throw errors.convertGitHubError(err, 'Error occurred during assigning issue user.');
140143
}
@@ -179,7 +182,7 @@ async function createComment(copilot, repoFullName, number, body) {
179182
const {owner, repo} = _parseRepoUrl(repoFullName);
180183
try {
181184
body = helper.prepareAutomatedComment(body, copilot);
182-
await github.issues.createComment({owner, repo, number, body});
185+
await github.issues.createComment({owner, repo, issue_number: number, body});
183186
} catch (err) {
184187
throw errors.convertGitHubError(err, 'Error occurred during creating comment on issue.');
185188
}
@@ -201,8 +204,7 @@ createComment.schema = {
201204
*/
202205
async function getUsernameById(copilot, userId) {
203206
Joi.attempt({copilot, userId}, getUsernameById.schema);
204-
const github = await _authenticate(copilot.accessToken);
205-
const login = await _getUsernameById(github, userId);
207+
const login = await _getUsernameById(userId);
206208
return login;
207209
}
208210

@@ -220,7 +222,7 @@ getUsernameById.schema = {
220222
async function getUserIdByLogin(copilot, login) {
221223
Joi.attempt({copilot, login}, getUserIdByLogin.schema);
222224
const github = await _authenticate(copilot.accessToken);
223-
const user = await github.users.getForUser({username: login});
225+
const user = await github.users.getByUsername({username: login});
224226
return user.data ? user.data.id : null;
225227
}
226228

@@ -247,7 +249,7 @@ async function markIssueAsPaid(copilot, repoFullName, number, challengeUUID, exi
247249
const labels = _(existLabels).filter((i) => i !== config.FIX_ACCEPTED_ISSUE_LABEL)
248250
.push(config.FIX_ACCEPTED_ISSUE_LABEL, config.PAID_ISSUE_LABEL).value();
249251
try {
250-
await github.issues.edit({owner, repo, number, labels});
252+
await github.issues.update({owner, repo, issue_number: number, labels});
251253
let commentMessage = '';
252254
commentMessage += `Payment task has been updated: ${config.TC_URL}/challenges/${challengeUUID}\n`;
253255
commentMessage += '*Payments Complete*\n';
@@ -258,7 +260,7 @@ async function markIssueAsPaid(copilot, repoFullName, number, challengeUUID, exi
258260
commentMessage += `Challenge \`${challengeUUID}\` has been paid and closed.`;
259261

260262
const body = helper.prepareAutomatedComment(commentMessage, copilot);
261-
await github.issues.createComment({owner, repo, number, body});
263+
await github.issues.createComment({owner, repo, issue_number: number, body});
262264
} catch (err) {
263265
throw errors.convertGitHubError(err, 'Error occurred during updating issue as paid.');
264266
}
@@ -287,7 +289,7 @@ async function changeState(copilot, repoFullName, number, state) {
287289
const github = await _authenticate(copilot.accessToken);
288290
const {owner, repo} = _parseRepoUrl(repoFullName);
289291
try {
290-
await github.issues.edit({owner, repo, number, state});
292+
await github.issues.update({owner, repo, issue_number: number, state});
291293
} catch (err) {
292294
throw errors.convertGitHubError(err, 'Error occurred during updating status of issue.');
293295
}
@@ -313,7 +315,7 @@ async function addLabels(copilot, repoFullName, number, labels) {
313315
const github = await _authenticate(copilot.accessToken);
314316
const {owner, repo} = _parseRepoUrl(repoFullName);
315317
try {
316-
await github.issues.edit({owner, repo, number, labels});
318+
await github.issues.update({owner, repo, issue_number: number, labels});
317319
} catch (err) {
318320
throw errors.convertGitHubError(err, 'Error occurred during adding label in issue.');
319321
}

‎services/IssueService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
532532

533533
if (challenge.status === 'Draft') {
534534
await topcoderApiHelper.activateChallenge(dbIssue.challengeUUID);
535-
//HACK - sleep 30 seconds so the legacy processor has time to "catch up"
535+
// HACK - sleep 30 seconds so the legacy processor has time to "catch up"
536536
// logger.debugWithContext('Sleeping for 1 seconds after activation so everything propagates...', event, issue);
537537
// await new Promise(resolve => setTimeout(resolve, 1000));
538538
}

‎services/UserService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ async function getRepositoryCopilotOrOwner(provider, repoFullName) {
7373
}
7474

7575
const userMapping = await dbHelper.queryOneUserMappingByTCUsername(
76-
provider === 'github' ? models.GithubUserMapping : models.GitlabUserMapping,
76+
provider === 'github' ? models.GithubUserMapping : models.GitlabUserMapping,
7777
hasCopilot ? project.copilot.toLowerCase() : project.owner.toLowerCase());
7878

7979
logger.debug('userMapping');

0 commit comments

Comments
 (0)
This repository has been archived.