FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
codeql-action/src/github.ts at mbg/use-github-instance-for-getApiClient · github/codeql-action · GitHub
github
codeql-action
Repository navigation
Code
Issues
163
(163)
Pull requests
37
(37)
Actions
Security and quality
2
(2)
Insights
Expand file tree
Breadcrumbs
codeql-action
/
src
/
github.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
110 lines (94 loc) · 3.36 KB
Breadcrumbs
codeql-action
/
src
/
github.ts
Copy path
File metadata and controls
110 lines (94 loc) · 3.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import
{
ActionsEnvVars
,
type
ReadOnlyEnv
}
from
"./environment"
;
import
{
ConfigurationError
}
from
"./util"
;
/** A string representing a GitHub instance address. */
export
type
InstanceURL
=
string
;
/**
* The URL for github.com.
*/
export
const
GITHUB_DOTCOM_URL
:
InstanceURL
=
"https://github.com"
;
/** A string representing a GitHub API instance address. */
export
type
InstanceApiURL
=
string
;
/**
* The URL for api.github.com.
*/
export
const
GITHUB_DOTCOM_API_URL
:
InstanceApiURL
=
"https://api.github.com"
;
/**
* Represents information about a GitHub instance, how to authenticate to it,
* and how to authenticate to other repos on it.
*/
export
type
GitHubApiCombinedDetails
=
GitHubApiDetails
&
GitHubApiExternalRepoDetails
;
/** Represents information about a GitHub instance. */
export
type
GitHubInstance
=
{
/** The base URL of the GitHub instance, such as `https://github.com`. */
url
:
string
;
/**
* The API base URL of the GitHub instance, such as `https://api.github.com`.
* Typically this is the `api.` subdomain of the `url` domain.
*/
apiURL
:
string
|
undefined
;
}
;
/** Represents a {
@link
GitHubInstance} with a token for accessing the API. */
export
type
GitHubApiDetails
=
GitHubInstance
&
{
/** The token to use for accessing the API of the GitHub instance. */
auth
?:
string
;
}
;
/**
* Represents information for accessing a repository on the same GitHub instance as the Action
* is currently running on.
*/
export
type
GitHubApiExternalRepoDetails
=
{
/** An optional token for accessing repo(s) on the same GitHub instance. */
externalRepoAuth
?:
string
;
}
;
/**
* Parses user input of a github.com or GHES URL to a canonical form.
* Removes any API prefix or suffix if one is present.
*/
export
function
parseGitHubUrl
(
inputUrl
:
string
)
:
string
{
const
originalUrl
=
inputUrl
;
if
(
inputUrl
.
indexOf
(
"://"
)
===
-
1
)
{
inputUrl
=
`https://
${
inputUrl
}
`
;
}
if
(
!
inputUrl
.
startsWith
(
"http://"
)
&&
!
inputUrl
.
startsWith
(
"https://"
)
)
{
throw
new
ConfigurationError
(
`"
${
originalUrl
}
" is not a http or https URL`
)
;
}
let
url
:
URL
;
try
{
url
=
new
URL
(
inputUrl
)
;
}
catch
{
throw
new
ConfigurationError
(
`"
${
originalUrl
}
" is not a valid URL`
)
;
}
// If we detect this is trying to be to github.com
// then return with a fixed canonical URL.
if
(
url
.
hostname
===
"github.com"
||
url
.
hostname
===
"api.github.com"
)
{
return
GITHUB_DOTCOM_URL
;
}
// Remove the API prefix if it's present
if
(
url
.
pathname
.
indexOf
(
"/api/v3"
)
!==
-
1
)
{
url
.
pathname
=
url
.
pathname
.
substring
(
0
,
url
.
pathname
.
indexOf
(
"/api/v3"
)
)
;
}
// Also consider subdomain isolation on GHES
if
(
url
.
hostname
.
startsWith
(
"api."
)
)
{
url
.
hostname
=
url
.
hostname
.
substring
(
4
)
;
}
// Normalise path to having a trailing slash for consistency
if
(
!
url
.
pathname
.
endsWith
(
"/"
)
)
{
url
.
pathname
=
`
${
url
.
pathname
}
/`
;
}
return
url
.
toString
(
)
;
}
/** Retrieves a {
@link
GitHubInstance} describing the instance we are running on. */
export
function
getCurrentInstance
(
env
:
ReadOnlyEnv
)
:
GitHubInstance
{
return
{
url
:
env
.
getRequired
(
ActionsEnvVars
.
GITHUB_SERVER_URL
)
,
apiURL
:
env
.
getRequired
(
ActionsEnvVars
.
GITHUB_API_URL
)
,
}
;
}
/** Retrieves a {
@link
GitHubInstance} describing the GitHub.com instance. */
export
function
getDotcomInstance
(
)
:
GitHubInstance
{
return
{
url
:
GITHUB_DOTCOM_URL
,
apiURL
:
GITHUB_DOTCOM_API_URL
,
}
;
}
Back
|
FazBrowse Home
|
New Git URL