second attempt

This commit is contained in:
John Wesley Walker III 2024-10-16 17:29:39 +00:00
parent e8e821983d
commit df4b58c789
2 changed files with 60 additions and 8 deletions

View file

@ -0,0 +1,23 @@
import * as urlHelper from '../src/url-helper'
describe('isGhes tests', () => {
it('basics', async () => {
expect(urlHelper.isGhes()).toBeFalsy()
expect(urlHelper.isGhes('https://github.com')).toBeFalsy()
//expect(urlHelper.isGhes('https://api.github.com')).toBeFalsy()
expect(urlHelper.isGhes('https://europe.ghe.com')).toBeFalsy()
expect(urlHelper.isGhes('https://test.github.localhost')).toBeFalsy()
expect(urlHelper.isGhes('https://src.onpremise.customer.com')).toBeTruthy()
})
})
describe('getServerApiUrl tests', () => {
it('basics', async () => {
expect(urlHelper.getServerApiUrl()).toBe('https://api.github.com')
expect(urlHelper.getServerApiUrl('https://github.com')).toBe('https://api.github.com')
expect(urlHelper.getServerApiUrl('https://GitHub.com')).toBe('https://api.github.com')
expect(urlHelper.getServerApiUrl('https://europe.ghe.com')).toBe('https://api.europe.ghe.com')
expect(urlHelper.getServerApiUrl('https://australia.GHE.COM')).toBe('https://api.australia.ghe.com')
expect(urlHelper.getServerApiUrl('https://src.onpremise.customer.com')).toBe('https://src.onpremise.customer.com/api/v3')
})
})

View file

@ -21,20 +21,32 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
}
export function getServerUrl(url?: string): URL {
let urlValue =
url && url.trim().length > 0
? url
: process.env['GITHUB_SERVER_URL'] || 'https://github.com'
return new URL(urlValue)
let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com'
if (hasContent(url, false)) {
resolvedUrl = url!
}
return new URL(resolvedUrl)
}
export function getServerApiUrl(): string {
export function getServerApiUrl(url?: string): string {
if (hasContent(url, false)) {
let serverUrl = getServerUrl(url)
if (isGhes(url)) {
serverUrl.pathname = "api/v3"
} else {
serverUrl.hostname = "api." + serverUrl.hostname
}
return pruneSuffix(serverUrl.toString(), '/')
}
return process.env['GITHUB_API_URL'] || 'https://api.github.com'
}
export function isGhes(): boolean {
export function isGhes(url?: string): boolean {
const ghUrl = new URL(
process.env['GITHUB_SERVER_URL'] || 'https://github.com'
url || process.env['GITHUB_SERVER_URL'] || 'https://github.com'
)
const hostname = ghUrl.hostname.trimEnd().toUpperCase()
@ -44,3 +56,20 @@ export function isGhes(): boolean {
return !isGitHubHost && !isGheHost && !isLocalHost
}
function pruneSuffix(text: string, suffix: string) {
if (hasContent(suffix, true) && text?.endsWith(suffix)) {
return text.substring(0, text.length - suffix.length)
}
return text
}
function hasContent(text: string | undefined, allowPureWhitespace: boolean): boolean {
let refinedText = text ?? ""
if (!allowPureWhitespace) {
refinedText = refinedText.trim()
}
return refinedText.length > 0
}