UNPKG

@atomist/automation-client

Version:
109 lines 4.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = require("axios"); const base64_1 = require("../internal/util/base64"); const logger_1 = require("../internal/util/logger"); const GitHubRepoRef_1 = require("../operations/common/GitHubRepoRef"); /** * Return a deep link to the file location * @param {GitHubRepoRef} grr * @param {SourceLocation} sourceLocation * @return {string} */ function deepLink(grr, sourceLocation) { return `${grr.scheme}${grr.remoteBase}/${grr.owner}/${grr.repo}/blob/${grr.sha}` + (!!sourceLocation ? `/${sourceLocation.path}` : "") + (!!sourceLocation && !!sourceLocation.lineFrom1 ? `#L${sourceLocation.lineFrom1}` : ""); } exports.deepLink = deepLink; /** * Check whether the given file, including path, exists * in the GitHub repo * @param token GitHub token. Don't try to auth if it's undefined or null * @param user * @param repo * @param path * @return {Promise<boolean|T>} */ function hasFile(token, user, repo, path) { // We only care if it returns 200. Otherwise it isn't there return filePromise(token, user, repo, path) .then(d => true) .catch(err => { logger_1.logger.info("Axios error getting file: Probably not there", err.toString()); return false; }); } exports.hasFile = hasFile; /** * Return file content, or undefined if it's not found * @param {string} token * @param {string} user * @param {string} repo * @param {string} path * @return {Promise<string>} */ function fileContent(token, user, repo, path) { return filePromise(token, user, repo, path) .then(d => base64_1.decode(d.data.content)) .catch(err => { logger_1.logger.info("Axios error getting file: Probably not there", err.toString()); return undefined; }); } exports.fileContent = fileContent; function filePromise(token, user, repo, path) { const url = `${GitHubRepoRef_1.GitHubDotComBase}/repos/${user}/${repo}/contents/${path}`; logger_1.logger.debug(`Request to '${url}' to check for file existence]`); // We only care if it returns 200. Otherwise it isn't there return axios_1.default.get(url, authHeaders(token)); } function raiseIssue(token, rr, issue) { const grr = GitHubRepoRef_1.isGitHubRepoRef(rr) ? rr : new GitHubRepoRef_1.GitHubRepoRef(rr.owner, rr.repo, rr.sha); const url = `${grr.scheme}${grr.apiBase}/repos/${rr.owner}/${rr.repo}/issues`; logger_1.logger.debug(`Request to '${url}' to raise issue`); return axios_1.default.post(url, issue, authHeaders(token)); } exports.raiseIssue = raiseIssue; function addRepoWebhook(token, rr, webhookData) { const url = `${rr.scheme}${rr.apiBase}/repos/${rr.owner}/${rr.repo}/hooks`; logger_1.logger.debug(`Request to '${url}' to create webhook`); return axios_1.default.post(url, webhookData, authHeaders(token)); } exports.addRepoWebhook = addRepoWebhook; function createCommitComment(token, rr, comment) { const url = `${rr.scheme}${rr.apiBase}/repos/${rr.owner}/${rr.repo}/commits/${rr.sha}/comments`; logger_1.logger.debug(`Request to '${url}' to create comment`); return axios_1.default.post(url, comment, authHeaders(token)); } exports.createCommitComment = createCommitComment; function createRepo(token, rr, description, priv) { const config = authHeaders(token); return axios_1.default.get(`${rr.scheme}${rr.apiBase}/orgs/${rr.owner}`, config) .then(result => { // We now know the owner is an org return `${rr.scheme}${rr.apiBase}/orgs/${rr.owner}/repos`; }, err => { // We now know the owner is an user return `${rr.scheme}${rr.apiBase}/user/repos`; }) .then(url => { const payload = { name: rr.repo, description, private: priv, }; logger_1.logger.debug(`Request to '${url}' to create repo`); return axios_1.default.post(url, payload, config); }); } exports.createRepo = createRepo; function authHeaders(token) { return token ? { headers: { Authorization: `token ${token}`, }, } : {}; } //# sourceMappingURL=gitHub.js.map