feat: Handle API URLs for Forgejo, Gitea, GitLab and GitHub
This commit is contained in:
parent
9791a4f146
commit
4a60504e1a
1 changed files with 39 additions and 6 deletions
45
dist/index.js
vendored
45
dist/index.js
vendored
|
@ -1277,18 +1277,51 @@ const ERROR_PR_ALREADY_EXISTS = 'A pull request already exists for';
|
|||
const ERROR_PR_REVIEW_TOKEN_SCOPE = 'Validation Failed: "Could not resolve to a node with the global id of';
|
||||
const ERROR_PR_FORK_COLLAB = `Fork collab can't be granted by someone without permission`;
|
||||
const blobCreationLimit = (0, p_limit_1.default)(8);
|
||||
function determineApiBaseUrl(hostname) {
|
||||
if (hostname === 'github.com') {
|
||||
return "https://api.github.com";
|
||||
}
|
||||
|
||||
const baseUrl = `https://${hostname}`;
|
||||
const possiblePaths = ['/api/v4/version', '/api/forgejo/v1/version', '/api/v1/version'];
|
||||
|
||||
for (const path of possiblePaths) {
|
||||
try {
|
||||
const url = `${baseUrl}${path}`;
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', url, false);
|
||||
xhr.setRequestHeader('Accept', 'application/json');
|
||||
xhr.send();
|
||||
|
||||
if (xhr.status === 200 || xhr.status === 401 || xhr.status === 403) {
|
||||
const contentType = xhr.getResponseHeader('Content-Type') || '';
|
||||
if (contentType.includes('application/json')) {
|
||||
return path.includes('/version') ? url.replace('/version', '') : url;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
// Ignore errors and try the next path
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error(`Unable to determine API base URL for hostname: ${hostname}`);
|
||||
}
|
||||
|
||||
class GitHubHelper {
|
||||
constructor(githubServerHostname, token) {
|
||||
const options = {};
|
||||
if (token) {
|
||||
options.auth = `${token}`;
|
||||
}
|
||||
if (githubServerHostname !== 'github.com') {
|
||||
options.baseUrl = `https://${githubServerHostname}/api/v1`;
|
||||
}
|
||||
else {
|
||||
options.baseUrl = 'https://api.github.com';
|
||||
try {
|
||||
options.baseUrl = await determineApiBaseUrl(githubServerHostname);
|
||||
core.info(`Valid API URL detected: ${apiBaseUrl}`);
|
||||
} catch (error) {
|
||||
console.error(error.message);
|
||||
process.exit(1); // Exit with an error code if no API path is found
|
||||
}
|
||||
core.info(`baseUrl: ${options.baseUrl}`);
|
||||
|
||||
options.throttle = octokit_client_1.throttleOptions;
|
||||
this.octokit = new octokit_client_1.Octokit(options);
|
||||
}
|
||||
|
@ -36020,4 +36053,4 @@ function validateConcurrency(concurrency) {
|
|||
/******/ module.exports = __webpack_exports__;
|
||||
/******/
|
||||
/******/ })()
|
||||
;
|
||||
;
|
||||
|
|
Loading…
Reference in a new issue