UNPKG

autoforce

Version:

Developer Automation tool for Github / Gitlab and Salesforce projects.

108 lines (105 loc) 3.47 kB
import { GraphQLClient } from 'graphql-request'; const GITLAB_API = 'https://gitlab.com/api/graphql?remove_deprecated=true'; export class GitLabApi { repoVar; projectNumber; graphqlAuth; constructor(token, owner, repo, projectNumber) { this.graphqlAuth = new GraphQLClient(GITLAB_API); this.repoVar = { owner, repo }; this.projectNumber = projectNumber; this.graphqlAuth.setHeaders({ authorization: `Bearer ${token}` }); } async getLabels() { return []; } async getMilestones() { return []; } async getIssue(issueNumber) { console.log(issueNumber); return {}; } async getIssues() { return []; } async getIssuesWithFilter(filter) { console.log(filter); return []; } async createLabel(name, color = 'random') { console.log(name, color); return { id: '', name, color }; } async createMilestone(title, state = 'open', description, dueOn) { console.log(title, state, description, dueOn); return { id: '', title: '', state: '', url: '' }; } async searchIssues(title) { console.log(title); return []; } async updateMilestone(title, state = 'open', description, dueOn) { console.log(title, state, description, dueOn); return { id: '', title: '', state: '', url: '' }; } async createIssue(title, state, label, body, milestone) { console.log(title, state, label, body, milestone); return { number: 1 }; } async moveIssue(issueNumber, state) { console.log(issueNumber, state); return true; } async assignIssueToMe(issueNumber) { console.log(issueNumber); return true; } async getUser() { const query = `{ viewer { login id } }`; const { viewer } = await this.graphqlAuth.request(query); return viewer; } // async request ( document: string, variables: Record<string, AnyValue> ) { // return await request({ // url: GITLAB_API, // document, // variables, // headers: this.headers // }) // } async graphqlQuery(query, vars) { const result = await this.graphqlAuth.request(query, vars); return result; // let toProcess = result[endpoint] // let returnVal = toProcess.nodes // let pageInfo = toProcess.pageInfo // let curPage = pageInfo.endCursor // if ( pageInfo.hasNextPage ) { // curPage = pageInfo.endCursor // result = await this.graphql.request(query, vars) // returnVal = returnVal.concat(result[endpoint].nodes) // pageInfo = result[endpoint].pageInfo // } // return returnVal } async getRepository() { } async createPullRequest(branchName, title, body) { const query = `mutation($branchName: ID!, $title: String!, $body: String!) { }`; await this.graphqlQuery(query, { branchName, title, body }); return true; } async assignBranchToIssue(issueNumber, branchName, commitSha) { const query = `mutation($branchName: ID!, $issueNumber: Int!, $commitSha: String!) { }`; await this.graphqlQuery(query, { branchName, issueNumber: Number.parseInt(issueNumber), commitSha }); return true; } }