32 lines
807 B
JavaScript
32 lines
807 B
JavaScript
const axios = require('axios');
|
|
|
|
const githubURL = (owner, repo) => `https://api.github.com/repos/${owner}/${repo}`;
|
|
|
|
class GithubClient {
|
|
constructor(owner, repo, required = false) {
|
|
const username = process.env.GITHUB_USERNAME;
|
|
const token = process.env.GITHUB_ACCESS_TOKEN;
|
|
|
|
const clientConfig = {
|
|
baseURL: githubURL(owner, repo),
|
|
timeout: 10000,
|
|
};
|
|
|
|
if (required && !username && !token) {
|
|
throw new Error('operation needs a GITHUB_USERNAME and GITHUB_ACCESS_TOKEN environment variables');
|
|
}
|
|
|
|
if (username && token) {
|
|
clientConfig.auth = { username: username, password: token };
|
|
}
|
|
|
|
this.client = this.createClient(clientConfig);
|
|
}
|
|
|
|
createClient(clientConfig) {
|
|
return axios.create(clientConfig);
|
|
}
|
|
}
|
|
|
|
module.exports = GithubClient;
|