format determineApiUrl code
Some checks failed
CI / build (push) Failing after 40s
CI / test (built) (push) Has been skipped
CI / test (committed) (push) Has been skipped
CI / commentTestSuiteHelp (push) Has been skipped
CI / package (push) Has been skipped

Signed-off-by: ahuston-0 <aliceghuston@gmail.com>
This commit is contained in:
ahuston-0 2025-02-01 16:01:59 -05:00
parent 7741a3efa3
commit afa1190aa1
No known key found for this signature in database
GPG Key ID: 47940175096C1330
2 changed files with 22 additions and 17 deletions

View File

@ -51,8 +51,8 @@ export async function createPullRequest(inputs: Inputs): Promise<void> {
core.startGroup('Determining the base and head repositories')
const baseRemote = gitConfigHelper.getGitRemote()
// Init the GitHub clients
const apiUrl = await GitHubHelper.determineApiUrl(baseRemote.hostname);
core.info(`Using API base URL: ${apiUrl}`);
const apiUrl = await GitHubHelper.determineApiUrl(baseRemote.hostname)
core.info(`Using API base URL: ${apiUrl}`)
const ghBranch = new GitHubHelper(apiUrl, inputs.branchToken)
const ghPull = new GitHubHelper(apiUrl, inputs.token)
// Determine the head repository; the target for the pull request branch

View File

@ -46,42 +46,47 @@ export class GitHubHelper {
if (token) {
options.auth = `${token}`
}
options.baseUrl = apiUrl;
options.baseUrl = apiUrl
options.throttle = throttleOptions
this.octokit = new Octokit(options)
}
static async determineApiUrl(hostname: string): Promise<string> {
if (hostname === 'github.com') {
return "https://api.github.com";
return 'https://api.github.com'
}
const baseUrl = `https://${hostname}`;
const possiblePaths = ['/api/v4/version', '/api/forgejo/v1/version', '/api/v1/version'];
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 response = await fetch(url, { method: 'GET', redirect: 'manual' }); // GitLab redirects
// invalid API paths
// to login prompt
// which returns 200
const url = `${baseUrl}${path}`
const response = await fetch(url, {method: 'GET', redirect: 'manual'}) // GitLab redirects
// invalid API paths
// to login prompt
// which returns 200
const contentType = response.headers.get('Content-Type') || '';
const contentType = response.headers.get('Content-Type') || ''
if (
(response.ok || [401, 403].includes(response.status)) && // We might get 401, 403
// as we're unauthorised
// as we're unauthorised
contentType.includes('application/json')
) {
return path.includes('/version') ? url.replace('/version', '') : url;
return path.includes('/version') ? url.replace('/version', '') : url
}
} catch (error) {
// Ignore errors and try the next path
// Ignore errors and try the next path
}
}
throw new Error(`Unable to determine API base URL for hostname: ${hostname}`);
throw new Error(
`Unable to determine API base URL for hostname: ${hostname}`
)
}
private parseRepository(repository: string): Repository {