UNPKG

4.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const axios_1 = require("axios");
4const base64_1 = require("../internal/util/base64");
5const logger_1 = require("../internal/util/logger");
6const GitHubRepoRef_1 = require("../operations/common/GitHubRepoRef");
7/**
8 * Return a deep link to the file location
9 * @param {GitHubRepoRef} grr
10 * @param {SourceLocation} sourceLocation
11 * @return {string}
12 */
13function deepLink(grr, sourceLocation) {
14 return `${grr.scheme}${grr.remoteBase}/${grr.owner}/${grr.repo}/blob/${grr.sha}` +
15 (!!sourceLocation ? `/${sourceLocation.path}` : "") +
16 (!!sourceLocation && !!sourceLocation.lineFrom1 ? `#L${sourceLocation.lineFrom1}` : "");
17}
18exports.deepLink = deepLink;
19/**
20 * Check whether the given file, including path, exists
21 * in the GitHub repo
22 * @param token GitHub token. Don't try to auth if it's undefined or null
23 * @param user
24 * @param repo
25 * @param path
26 * @return {Promise<boolean|T>}
27 */
28function hasFile(token, user, repo, path) {
29 // We only care if it returns 200. Otherwise it isn't there
30 return filePromise(token, user, repo, path)
31 .then(d => true)
32 .catch(err => {
33 logger_1.logger.info("Axios error getting file: Probably not there", err.toString());
34 return false;
35 });
36}
37exports.hasFile = hasFile;
38/**
39 * Return file content, or undefined if it's not found
40 * @param {string} token
41 * @param {string} user
42 * @param {string} repo
43 * @param {string} path
44 * @return {Promise<string>}
45 */
46function fileContent(token, user, repo, path) {
47 return filePromise(token, user, repo, path)
48 .then(d => base64_1.decode(d.data.content))
49 .catch(err => {
50 logger_1.logger.info("Axios error getting file: Probably not there", err.toString());
51 return undefined;
52 });
53}
54exports.fileContent = fileContent;
55function filePromise(token, user, repo, path) {
56 const url = `${GitHubRepoRef_1.GitHubDotComBase}/repos/${user}/${repo}/contents/${path}`;
57 logger_1.logger.debug(`Request to '${url}' to check for file existence]`);
58 // We only care if it returns 200. Otherwise it isn't there
59 return axios_1.default.get(url, authHeaders(token));
60}
61function raiseIssue(token, rr, issue) {
62 const grr = GitHubRepoRef_1.isGitHubRepoRef(rr) ? rr : new GitHubRepoRef_1.GitHubRepoRef(rr.owner, rr.repo, rr.sha);
63 const url = `${grr.scheme}${grr.apiBase}/repos/${rr.owner}/${rr.repo}/issues`;
64 logger_1.logger.debug(`Request to '${url}' to raise issue`);
65 return axios_1.default.post(url, issue, authHeaders(token));
66}
67exports.raiseIssue = raiseIssue;
68function addRepoWebhook(token, rr, webhookData) {
69 const url = `${rr.scheme}${rr.apiBase}/repos/${rr.owner}/${rr.repo}/hooks`;
70 logger_1.logger.debug(`Request to '${url}' to create webhook`);
71 return axios_1.default.post(url, webhookData, authHeaders(token));
72}
73exports.addRepoWebhook = addRepoWebhook;
74function createCommitComment(token, rr, comment) {
75 const url = `${rr.scheme}${rr.apiBase}/repos/${rr.owner}/${rr.repo}/commits/${rr.sha}/comments`;
76 logger_1.logger.debug(`Request to '${url}' to create comment`);
77 return axios_1.default.post(url, comment, authHeaders(token));
78}
79exports.createCommitComment = createCommitComment;
80function createRepo(token, rr, description, priv) {
81 const config = authHeaders(token);
82 return axios_1.default.get(`${rr.scheme}${rr.apiBase}/orgs/${rr.owner}`, config)
83 .then(result => {
84 // We now know the owner is an org
85 return `${rr.scheme}${rr.apiBase}/orgs/${rr.owner}/repos`;
86 }, err => {
87 // We now know the owner is an user
88 return `${rr.scheme}${rr.apiBase}/user/repos`;
89 })
90 .then(url => {
91 const payload = {
92 name: rr.repo,
93 description,
94 private: priv,
95 };
96 logger_1.logger.debug(`Request to '${url}' to create repo`);
97 return axios_1.default.post(url, payload, config);
98 });
99}
100exports.createRepo = createRepo;
101function authHeaders(token) {
102 return token ? {
103 headers: {
104 Authorization: `token ${token}`,
105 },
106 }
107 : {};
108}
109//# sourceMappingURL=gitHub.js.map
\No newline at end of file