autoforce
Version:
Developer Automation tool for Github / Gitlab and Salesforce projects.
108 lines (105 loc) • 3.47 kB
JavaScript
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;
}
}