1212const config = require ( 'config' ) ;
1313const _ = require ( 'lodash' ) ;
1414const 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' ) ;
1618const logger = require ( '../utils/logger' ) ;
1719const errors = require ( '../utils/errors' ) ;
1820const helper = require ( '../utils/helper' ) ;
1921
22+ const request = superagentPromise ( superagent , Promise ) ;
23+
2024const copilotUserSchema = Joi . object ( ) . keys ( {
2125 accessToken : Joi . string ( ) . required ( ) ,
2226 userProviderId : Joi . number ( ) . required ( ) ,
@@ -44,12 +48,10 @@ function _parseRepoUrl(fullName) {
4448 */
4549async 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 */
6769async 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 */
202205async 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 = {
220222async 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 }
0 commit comments