1
1
import { GraphQLClient , gql } from 'graphql-request'
2
+ import { get } from 'lodash'
2
3
export const tryParseJson = ( str : string ) => {
3
4
try {
4
5
return JSON . parse ( str )
@@ -15,27 +16,14 @@ export const tryParseJson = (str: string) => {
15
16
export async function buildUrlHeaders ( payload : Record < string , string | undefined > ) {
16
17
const esc = encodeURIComponent
17
18
const headers = { 'authorization' : payload [ 'CF_API_KEY' ] ! }
18
- const runtimeName = payload [ 'CF_RUNTIME_NAME' ] as string
19
+ const runtimeName = payload [ 'CF_RUNTIME_NAME' ]
19
20
let host
20
21
if ( ! runtimeName ) {
21
- host = payload [ 'CF_HOST' ] as string
22
+ host = payload [ 'CF_HOST' ]
22
23
delete payload [ 'CF_HOST' ]
23
24
}
24
25
else {
25
- const platformHost = payload [ 'CF_HOST_URL' ] || 'https://g.codefresh.io'
26
- const graphQLClient = new GraphQLClient ( `${ platformHost } /2.0/api/graphql` , {
27
- headers
28
- } )
29
-
30
- const getRuntimeIngressHostQuery = gql `
31
- query Runtime($name: String!) {
32
- runtime(name: $name) {
33
- ingressHost
34
- }
35
- }`
36
-
37
- const res = await graphQLClient . request ( getRuntimeIngressHostQuery , { name : runtimeName } )
38
- host = res . runtime . ingressHost as string
26
+ host = getRuntimeIngressHost ( runtimeName , headers )
39
27
delete payload [ 'CF_RUNTIME_NAME' ]
40
28
}
41
29
delete payload [ 'CF_API_KEY' ]
@@ -48,6 +36,27 @@ export const tryParseJson = (str: string) => {
48
36
}
49
37
50
38
39
+ async function getRuntimeIngressHost ( runtimeName : string , headers : Record < string , string > , platformHost = 'https://g.codefresh.io' ) : Promise < string > {
40
+ const graphQLClient = new GraphQLClient ( `${ platformHost } /2.0/api/graphql` , {
41
+ headers
42
+ } )
43
+
44
+ const getRuntimeIngressHostQuery = gql `
45
+ query Runtime($name: String!) {
46
+ runtime(name: $name) {
47
+ ingressHost
48
+ }
49
+ }`
50
+
51
+ const res = await graphQLClient . request ( getRuntimeIngressHostQuery , { name : runtimeName } )
52
+ const ingressHost = get ( res , 'runtime.ingressHost' )
53
+ if ( ! ingressHost ) {
54
+ const message = res . runtime ? `ingress host is not defined on your '${ runtimeName } ' runtime` : `runtime '${ runtimeName } ' does not exist`
55
+ throw new errors . ValidationError ( `Validation Error: ${ message } ` )
56
+ }
57
+ return ingressHost
58
+ }
59
+
51
60
export const errors = {
52
61
EventSourceError : class extends Error {
53
62
constructor ( message ?: string , name ?: string ) {
0 commit comments