Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/src/url-helper.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/url-helper.ts')
-rw-r--r--src/url-helper.ts34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/url-helper.ts b/src/url-helper.ts
index 05f1cbd..6807b7f 100644
--- a/src/url-helper.ts
+++ b/src/url-helper.ts
@@ -1,6 +1,6 @@
import * as assert from 'assert'
-import {IGitSourceSettings} from './git-source-settings'
import {URL} from 'url'
+import {IGitSourceSettings} from './git-source-settings'
export function getFetchUrl(settings: IGitSourceSettings): string {
assert.ok(
@@ -8,7 +8,7 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
'settings.repositoryOwner must be defined'
)
assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
- const serviceUrl = getServerUrl()
+ const serviceUrl = getServerUrl(settings.githubServerUrl)
const encodedOwner = encodeURIComponent(settings.repositoryOwner)
const encodedName = encodeURIComponent(settings.repositoryName)
if (settings.sshKey) {
@@ -19,11 +19,27 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`
}
-export function getServerUrl(): URL {
- // todo: remove GITHUB_URL after support for GHES Alpha is no longer needed
- return new URL(
- process.env['GITHUB_SERVER_URL'] ||
- process.env['GITHUB_URL'] ||
- 'https://github.com'
- )
+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)
+}
+
+export function getServerApiUrl(url?: string): string {
+ let apiUrl = 'https://api.github.com'
+
+ if (isGhes(url)) {
+ const serverUrl = getServerUrl(url)
+ apiUrl = new URL(`${serverUrl.origin}/api/v3`).toString()
+ }
+
+ return apiUrl
+}
+
+export function isGhes(url?: string): boolean {
+ const ghUrl = getServerUrl(url)
+
+ return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
}