@xyo-network/api-call-witness 5.3.2 → 5.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/Payload/Schema.d.ts +9 -0
- package/dist/neutral/Payload/Schema.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiCall.d.ts +2 -0
- package/dist/neutral/Payload/identity/asApiCall.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts +2 -0
- package/dist/neutral/Payload/identity/asApiCallBase64Result.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiCallResult.d.ts +2 -0
- package/dist/neutral/Payload/identity/asApiCallResult.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts +2 -0
- package/dist/neutral/Payload/identity/asApiCallXmlResult.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiUriCall.d.ts +2 -0
- package/dist/neutral/Payload/identity/asApiUriCall.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts +9 -0
- package/dist/neutral/Payload/identity/asApiUriTemplateCall.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/index.d.ts +14 -0
- package/dist/neutral/Payload/identity/index.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiCall.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiCall.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiCallBase64Result.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiCallBase64Result.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiCallErrorResult.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiCallErrorResult.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiCallResult.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiCallResult.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiCallXmlResult.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiCallXmlResult.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiUriCall.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiUriCall.d.ts.map +1 -0
- package/dist/neutral/Payload/identity/isApiUriTemplateCall.d.ts +3 -0
- package/dist/neutral/Payload/identity/isApiUriTemplateCall.d.ts.map +1 -0
- package/dist/neutral/Payload/index.d.ts +4 -0
- package/dist/neutral/Payload/index.d.ts.map +1 -0
- package/{src/Payload/types/ApiCall.ts → dist/neutral/Payload/types/ApiCall.d.ts} +4 -4
- package/dist/neutral/Payload/types/ApiCall.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallBase64Result.d.ts +11 -0
- package/dist/neutral/Payload/types/ApiCallBase64Result.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallErrorResult.d.ts +9 -0
- package/dist/neutral/Payload/types/ApiCallErrorResult.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallFields.d.ts +8 -0
- package/dist/neutral/Payload/types/ApiCallFields.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts +12 -0
- package/dist/neutral/Payload/types/ApiCallJsonResult.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallResult.d.ts +8 -0
- package/dist/neutral/Payload/types/ApiCallResult.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiCallXmlResult.d.ts +9 -0
- package/dist/neutral/Payload/types/ApiCallXmlResult.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiUriCall.d.ts +7 -0
- package/dist/neutral/Payload/types/ApiUriCall.d.ts.map +1 -0
- package/dist/neutral/Payload/types/ApiUriTemplateCall.d.ts +8 -0
- package/dist/neutral/Payload/types/ApiUriTemplateCall.d.ts.map +1 -0
- package/dist/neutral/Payload/types/HttpMeta.d.ts +5 -0
- package/dist/neutral/Payload/types/HttpMeta.d.ts.map +1 -0
- package/dist/neutral/Payload/types/MimeTypes.d.ts +2 -0
- package/dist/neutral/Payload/types/MimeTypes.d.ts.map +1 -0
- package/dist/neutral/Payload/types/Queries.d.ts +2 -0
- package/dist/neutral/Payload/types/Queries.d.ts.map +1 -0
- package/dist/neutral/Payload/types/Verb.d.ts +2 -0
- package/dist/neutral/Payload/types/Verb.d.ts.map +1 -0
- package/dist/neutral/Payload/types/index.d.ts +14 -0
- package/dist/neutral/Payload/types/index.d.ts.map +1 -0
- package/dist/neutral/Witness/Config.d.ts +26 -0
- package/dist/neutral/Witness/Config.d.ts.map +1 -0
- package/dist/neutral/Witness/Params.d.ts +7 -0
- package/dist/neutral/Witness/Params.d.ts.map +1 -0
- package/dist/neutral/Witness/Schema.d.ts +5 -0
- package/dist/neutral/Witness/Schema.d.ts.map +1 -0
- package/dist/neutral/Witness/Witness.d.ts +16 -0
- package/dist/neutral/Witness/Witness.d.ts.map +1 -0
- package/dist/neutral/Witness/index.d.ts +5 -0
- package/dist/neutral/Witness/index.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +3 -0
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.mjs +327 -0
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/neutral/lib/checkIpfsUrl.d.ts +8 -0
- package/dist/neutral/lib/checkIpfsUrl.d.ts.map +1 -0
- package/dist/neutral/lib/index.d.ts +2 -0
- package/dist/neutral/lib/index.d.ts.map +1 -0
- package/package.json +10 -5
- package/src/Payload/Schema.ts +0 -7
- package/src/Payload/identity/asApiCall.ts +0 -5
- package/src/Payload/identity/asApiCallBase64Result.ts +0 -5
- package/src/Payload/identity/asApiCallResult.ts +0 -5
- package/src/Payload/identity/asApiCallXmlResult.ts +0 -5
- package/src/Payload/identity/asApiUriCall.ts +0 -5
- package/src/Payload/identity/asApiUriTemplateCall.ts +0 -5
- package/src/Payload/identity/index.ts +0 -13
- package/src/Payload/identity/isApiCall.ts +0 -6
- package/src/Payload/identity/isApiCallBase64Result.ts +0 -8
- package/src/Payload/identity/isApiCallErrorResult.ts +0 -7
- package/src/Payload/identity/isApiCallResult.ts +0 -6
- package/src/Payload/identity/isApiCallXmlResult.ts +0 -8
- package/src/Payload/identity/isApiUriCall.ts +0 -4
- package/src/Payload/identity/isApiUriTemplateCall.ts +0 -5
- package/src/Payload/index.ts +0 -3
- package/src/Payload/types/ApiCallBase64Result.ts +0 -15
- package/src/Payload/types/ApiCallErrorResult.ts +0 -13
- package/src/Payload/types/ApiCallFields.ts +0 -8
- package/src/Payload/types/ApiCallJsonResult.ts +0 -25
- package/src/Payload/types/ApiCallResult.ts +0 -12
- package/src/Payload/types/ApiCallXmlResult.ts +0 -13
- package/src/Payload/types/ApiUriCall.ts +0 -11
- package/src/Payload/types/ApiUriTemplateCall.ts +0 -12
- package/src/Payload/types/HttpMeta.ts +0 -4
- package/src/Payload/types/MimeTypes.ts +0 -13
- package/src/Payload/types/Queries.ts +0 -1
- package/src/Payload/types/Verb.ts +0 -1
- package/src/Payload/types/index.ts +0 -13
- package/src/Witness/Config.ts +0 -43
- package/src/Witness/Params.ts +0 -10
- package/src/Witness/Schema.ts +0 -4
- package/src/Witness/Witness.ts +0 -197
- package/src/Witness/index.ts +0 -4
- package/src/Witness/spec/opensea.nft-call.json +0 -41
- package/src/index.ts +0 -2
- package/src/lib/checkIpfsUrl.ts +0 -43
- package/src/lib/index.ts +0 -1
- package/src/types.d.ts +0 -1
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { JsonArray, JsonObject } from '@xylabs/sdk-js'
|
|
2
|
-
|
|
3
|
-
import type { ApiCallBase64Result } from './ApiCallBase64Result.ts'
|
|
4
|
-
import type { ApiCallErrorResult } from './ApiCallErrorResult.ts'
|
|
5
|
-
import type { ApiCallJsonResult } from './ApiCallJsonResult.ts'
|
|
6
|
-
|
|
7
|
-
type NewType = JsonObject
|
|
8
|
-
|
|
9
|
-
export type ApiCallResult<TJson extends JsonArray | JsonObject = JsonArray | NewType>
|
|
10
|
-
= | ApiCallBase64Result
|
|
11
|
-
| ApiCallJsonResult<TJson>
|
|
12
|
-
| ApiCallErrorResult
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/sdk-js'
|
|
2
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
3
|
-
|
|
4
|
-
import type { ApiCallResultSchema } from '../Schema.ts'
|
|
5
|
-
|
|
6
|
-
export type ApiCallXmlResult = Payload<
|
|
7
|
-
{
|
|
8
|
-
call: Hash
|
|
9
|
-
contentType: 'application/xml' | 'text/xml'
|
|
10
|
-
data: string
|
|
11
|
-
},
|
|
12
|
-
ApiCallResultSchema
|
|
13
|
-
>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
2
|
-
|
|
3
|
-
import type { ApiCallSchema } from '../Schema.ts'
|
|
4
|
-
import type { ApiCallFields } from './ApiCallFields.ts'
|
|
5
|
-
|
|
6
|
-
export type ApiUriCallPayload = Payload<
|
|
7
|
-
ApiCallFields & {
|
|
8
|
-
uri: string
|
|
9
|
-
},
|
|
10
|
-
ApiCallSchema
|
|
11
|
-
>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
2
|
-
|
|
3
|
-
import type { ApiCallSchema } from '../Schema.ts'
|
|
4
|
-
import type { ApiCallFields } from './ApiCallFields.ts'
|
|
5
|
-
|
|
6
|
-
export type ApiUriTemplateCallPayload = Payload<
|
|
7
|
-
ApiCallFields & {
|
|
8
|
-
params?: Record<string, string>
|
|
9
|
-
uriTemplate?: string
|
|
10
|
-
},
|
|
11
|
-
ApiCallSchema
|
|
12
|
-
>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// TODO: Bring in from some library or package for completeness
|
|
2
|
-
export type MimeTypes
|
|
3
|
-
= | 'application/json' // JSON format
|
|
4
|
-
| 'application/octet-stream' // Binary data
|
|
5
|
-
| 'application/pdf' // PDF format
|
|
6
|
-
| 'application/xhtml+xml' // XHTML format
|
|
7
|
-
| 'application/xml' // XML format
|
|
8
|
-
| 'image/gif' // GIF image format
|
|
9
|
-
| 'image/jpeg' // JPEG image format
|
|
10
|
-
| 'image/png' // PNG image format
|
|
11
|
-
| 'text/html' // HTML format
|
|
12
|
-
| 'text/plain' // Plain text format
|
|
13
|
-
| 'text/xml' // XML format (alternative)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type Queries = Record<string, string>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type Verb = 'get' | 'post'
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from './ApiCall.ts'
|
|
2
|
-
export * from './ApiCallBase64Result.ts'
|
|
3
|
-
export * from './ApiCallErrorResult.ts'
|
|
4
|
-
export * from './ApiCallFields.ts'
|
|
5
|
-
export * from './ApiCallJsonResult.ts'
|
|
6
|
-
export * from './ApiCallResult.ts'
|
|
7
|
-
export * from './ApiCallXmlResult.ts'
|
|
8
|
-
export * from './ApiUriCall.ts'
|
|
9
|
-
export * from './ApiUriTemplateCall.ts'
|
|
10
|
-
export * from './HttpMeta.ts'
|
|
11
|
-
export * from './MimeTypes.ts'
|
|
12
|
-
export * from './Queries.ts'
|
|
13
|
-
export * from './Verb.ts'
|
package/src/Witness/Config.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { AsObjectFactory } from '@xylabs/sdk-js'
|
|
2
|
-
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
3
|
-
import type { WitnessConfig } from '@xyo-network/witness-model'
|
|
4
|
-
|
|
5
|
-
import type {
|
|
6
|
-
ApiCallPayload, ApiUriCallPayload, ApiUriTemplateCallPayload, MimeTypes,
|
|
7
|
-
} from '../Payload/index.ts'
|
|
8
|
-
import { ApiCallWitnessConfigSchema } from './Schema.ts'
|
|
9
|
-
|
|
10
|
-
export type ApiCallWitnessConfigBase = WitnessConfig<{
|
|
11
|
-
accept?: MimeTypes
|
|
12
|
-
headers?: Record<string, string | undefined>
|
|
13
|
-
queries?: ApiCallPayload['queries']
|
|
14
|
-
schema: ApiCallWitnessConfigSchema
|
|
15
|
-
timeout?: number
|
|
16
|
-
verb?: ApiCallPayload['verb']
|
|
17
|
-
}>
|
|
18
|
-
|
|
19
|
-
export type ApiUriCallWitnessConfig = WitnessConfig<
|
|
20
|
-
ApiCallWitnessConfigBase & {
|
|
21
|
-
uri: ApiUriCallPayload['uri']
|
|
22
|
-
}
|
|
23
|
-
>
|
|
24
|
-
|
|
25
|
-
export type ApiUriTemplateCallWitnessConfig = WitnessConfig<
|
|
26
|
-
ApiCallWitnessConfigBase & {
|
|
27
|
-
params?: Record<string, string>
|
|
28
|
-
uriTemplate: ApiUriTemplateCallPayload['uriTemplate']
|
|
29
|
-
}
|
|
30
|
-
>
|
|
31
|
-
|
|
32
|
-
export type ApiCallWitnessConfig = ApiUriCallWitnessConfig | ApiUriTemplateCallWitnessConfig | ApiCallWitnessConfigBase
|
|
33
|
-
|
|
34
|
-
export const isApiCallWitnessConfig = isPayloadOfSchemaType<ApiCallWitnessConfig>(ApiCallWitnessConfigSchema)
|
|
35
|
-
export const asApiCallWitnessConfig = AsObjectFactory.create(isApiCallWitnessConfig)
|
|
36
|
-
|
|
37
|
-
export const isApiUriCallWitnessConfig = (value?: unknown): value is ApiUriCallWitnessConfig =>
|
|
38
|
-
isApiCallWitnessConfig(value) && !!(value as ApiUriCallWitnessConfig).uri
|
|
39
|
-
export const asApiUriCallWitnessConfig = AsObjectFactory.create(isApiUriCallWitnessConfig)
|
|
40
|
-
|
|
41
|
-
export const isApiUriTemplateCallWitnessConfig = (value?: unknown): value is ApiUriTemplateCallWitnessConfig =>
|
|
42
|
-
isApiCallWitnessConfig(value) && !!(value as ApiUriTemplateCallWitnessConfig).uriTemplate
|
|
43
|
-
export const asApiUriTemplateCallWitnessConfig = AsObjectFactory.create(isApiUriTemplateCallWitnessConfig)
|
package/src/Witness/Params.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { WitnessParams } from '@xyo-network/witness-model'
|
|
2
|
-
|
|
3
|
-
import type { ApiCallWitnessConfig } from './Config.ts'
|
|
4
|
-
|
|
5
|
-
export interface ApiCallWitnessParams extends WitnessParams<
|
|
6
|
-
ApiCallWitnessConfig>
|
|
7
|
-
{
|
|
8
|
-
headers?: Record<string, string | undefined>
|
|
9
|
-
ipfsGateway?: string
|
|
10
|
-
}
|
package/src/Witness/Schema.ts
DELETED
package/src/Witness/Witness.ts
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-statements */
|
|
2
|
-
|
|
3
|
-
import type { Hash } from '@xylabs/sdk-js'
|
|
4
|
-
import {
|
|
5
|
-
assertEx, axiosJsonConfig, URL,
|
|
6
|
-
} from '@xylabs/sdk-js'
|
|
7
|
-
import { AbstractWitness } from '@xyo-network/abstract-witness'
|
|
8
|
-
import type { Schema } from '@xyo-network/payload-model'
|
|
9
|
-
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
10
|
-
import { PayloadBuilder } from '@xyo-network/sdk-js'
|
|
11
|
-
import type { AxiosError } from 'axios'
|
|
12
|
-
import { Axios } from 'axios'
|
|
13
|
-
import { fromByteArray } from 'base64-js'
|
|
14
|
-
import fillTemplate from 'es6-dynamic-template'
|
|
15
|
-
|
|
16
|
-
import { checkIpfsUrl } from '../lib/index.ts'
|
|
17
|
-
import type {
|
|
18
|
-
ApiCallBase64Result,
|
|
19
|
-
ApiCallErrorResult,
|
|
20
|
-
ApiCallJsonResult,
|
|
21
|
-
ApiCallJsonResultType,
|
|
22
|
-
ApiCallPayload,
|
|
23
|
-
ApiCallResult,
|
|
24
|
-
ApiCallXmlResult,
|
|
25
|
-
MimeTypes,
|
|
26
|
-
} from '../Payload/index.ts'
|
|
27
|
-
import {
|
|
28
|
-
ApiCallResultSchema,
|
|
29
|
-
ApiCallSchema,
|
|
30
|
-
asApiUriCallPayload,
|
|
31
|
-
asApiUriTemplateCall,
|
|
32
|
-
} from '../Payload/index.ts'
|
|
33
|
-
import { asApiUriCallWitnessConfig, asApiUriTemplateCallWitnessConfig } from './Config.ts'
|
|
34
|
-
import type { ApiCallWitnessParams } from './Params.ts'
|
|
35
|
-
import { ApiCallWitnessConfigSchema } from './Schema.ts'
|
|
36
|
-
|
|
37
|
-
export class ApiCallWitness<TParams extends ApiCallWitnessParams = ApiCallWitnessParams> extends AbstractWitness<TParams, ApiCallPayload, ApiCallResult> {
|
|
38
|
-
static override readonly configSchemas: Schema[] = [...super.configSchemas, ApiCallWitnessConfigSchema]
|
|
39
|
-
static override readonly defaultConfigSchema: Schema = ApiCallWitnessConfigSchema
|
|
40
|
-
|
|
41
|
-
get accept(): MimeTypes {
|
|
42
|
-
return this.config.accept ?? 'application/json'
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
get ipfsGateway() {
|
|
46
|
-
return this.params.ipfsGateway
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get timeout() {
|
|
50
|
-
return this.config.timeout
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getFullUri(call?: ApiCallPayload): string {
|
|
54
|
-
const { uri: callUri } = asApiUriCallPayload(call) ?? {}
|
|
55
|
-
const {
|
|
56
|
-
uriTemplate: callUriTemplate, params: callParams, queries: callQueries,
|
|
57
|
-
} = asApiUriTemplateCall(call) ?? {}
|
|
58
|
-
const { uri: configUri } = asApiUriCallWitnessConfig(this.config) ?? {}
|
|
59
|
-
const {
|
|
60
|
-
uriTemplate: configUriTemplate, params: configParams, queries: configQueries,
|
|
61
|
-
} = asApiUriTemplateCallWitnessConfig(this.config) ?? {}
|
|
62
|
-
|
|
63
|
-
const params = { ...configParams, ...callParams }
|
|
64
|
-
|
|
65
|
-
let url: URL | undefined = undefined
|
|
66
|
-
|
|
67
|
-
if (callUri) {
|
|
68
|
-
url = new URL(callUri)
|
|
69
|
-
} else if (callUriTemplate) {
|
|
70
|
-
url = new URL(fillTemplate(callUriTemplate, params))
|
|
71
|
-
} else if (configUri) {
|
|
72
|
-
url = new URL(configUri)
|
|
73
|
-
} else if (configUriTemplate) {
|
|
74
|
-
url = new URL(fillTemplate(configUriTemplate, params))
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (url) {
|
|
78
|
-
const queries = Object.entries({ ...configQueries, ...callQueries })
|
|
79
|
-
for (let [key, value] of queries) url?.searchParams.set(key, value)
|
|
80
|
-
return url.href
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
throw new Error('Unable to determine uri. No uri/uriTemplate specified in either the call or config.')
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
getHeaders(headers?: Record<string, string | undefined>): Record<string, string | undefined> {
|
|
87
|
-
return {
|
|
88
|
-
...this.params.headers, ...this.config.headers, ...headers,
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
protected override async observeHandler(inPayloads: ApiCallPayload[] = []): Promise<ApiCallResult[]> {
|
|
93
|
-
await this.started('throw')
|
|
94
|
-
try {
|
|
95
|
-
const observations = await Promise.all(
|
|
96
|
-
inPayloads.filter(isPayloadOfSchemaType<ApiCallPayload>(ApiCallSchema)).map(async (call) => {
|
|
97
|
-
const { verb: callVerb } = call
|
|
98
|
-
const { verb: configVerb } = this.config
|
|
99
|
-
const verb = callVerb ?? configVerb ?? 'get'
|
|
100
|
-
const uri = this.getFullUri(call)
|
|
101
|
-
|
|
102
|
-
const validatedUri = assertEx(checkIpfsUrl(uri, this.ipfsGateway), () => 'Invalid URI')
|
|
103
|
-
|
|
104
|
-
if (verb === 'get') {
|
|
105
|
-
return this.httpGet(validatedUri, (await PayloadBuilder.dataHash(call)))
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const observation: ApiCallResult = {
|
|
109
|
-
call: await PayloadBuilder.hash(call),
|
|
110
|
-
schema: ApiCallResultSchema,
|
|
111
|
-
}
|
|
112
|
-
return observation
|
|
113
|
-
}),
|
|
114
|
-
)
|
|
115
|
-
return observations
|
|
116
|
-
} catch (ex) {
|
|
117
|
-
const error = ex as Error
|
|
118
|
-
console.error(`Error [${this.config.name}]: ${error.message}`)
|
|
119
|
-
console.log(error.stack)
|
|
120
|
-
throw error
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// eslint-disable-next-line complexity
|
|
125
|
-
private async httpGet(url: string, call: Hash, headers?: Record<string, string | undefined>): Promise<ApiCallResult> {
|
|
126
|
-
const result: ApiCallResult = {
|
|
127
|
-
call,
|
|
128
|
-
schema: ApiCallResultSchema,
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
switch (this.accept) {
|
|
132
|
-
case 'application/json': {
|
|
133
|
-
const axios = new Axios(axiosJsonConfig({ headers: { ...this.getHeaders(headers), Accept: 'application/json' }, timeout: this.timeout }))
|
|
134
|
-
const response = await axios.get<ApiCallJsonResultType>(url)
|
|
135
|
-
if (response.status >= 200 && response.status < 300) {
|
|
136
|
-
const jsonResult = result as ApiCallJsonResult
|
|
137
|
-
jsonResult.data = response.data
|
|
138
|
-
jsonResult.contentType = 'application/json'
|
|
139
|
-
} else {
|
|
140
|
-
const errorResult = result as ApiCallErrorResult
|
|
141
|
-
errorResult.http = { status: response.status }
|
|
142
|
-
}
|
|
143
|
-
break
|
|
144
|
-
}
|
|
145
|
-
case 'application/xml':
|
|
146
|
-
case 'text/xml': {
|
|
147
|
-
const axios = new Axios({
|
|
148
|
-
headers: { ...this.getHeaders(headers), Accept: this.accept },
|
|
149
|
-
responseType: 'arraybuffer',
|
|
150
|
-
timeout: this.timeout,
|
|
151
|
-
})
|
|
152
|
-
const response = await axios.get(url)
|
|
153
|
-
if (response.status >= 200 && response.status < 300) {
|
|
154
|
-
const xmlResult = result as ApiCallXmlResult
|
|
155
|
-
xmlResult.data = Buffer.from(response.data, 'binary').toString('utf8')
|
|
156
|
-
xmlResult.contentType = response.headers['content-type']?.toString() ?? 'application/xml'
|
|
157
|
-
} else {
|
|
158
|
-
const errorResult = result as ApiCallErrorResult
|
|
159
|
-
errorResult.http = { status: response.status }
|
|
160
|
-
}
|
|
161
|
-
break
|
|
162
|
-
}
|
|
163
|
-
default: {
|
|
164
|
-
const axios = new Axios({
|
|
165
|
-
headers: this.params.headers, responseType: 'arraybuffer', timeout: this.timeout,
|
|
166
|
-
})
|
|
167
|
-
const response = await axios.get(url)
|
|
168
|
-
if (response.status >= 200 && response.status < 300) {
|
|
169
|
-
const jsonResult = result as ApiCallBase64Result
|
|
170
|
-
jsonResult.data = fromByteArray(response.data)
|
|
171
|
-
jsonResult.contentType = response.headers['content-type']?.toString() ?? 'application/octet-stream'
|
|
172
|
-
} else {
|
|
173
|
-
const errorResult = result as ApiCallErrorResult
|
|
174
|
-
errorResult.http = { status: response.status }
|
|
175
|
-
}
|
|
176
|
-
break
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
} catch (ex) {
|
|
180
|
-
const axiosError = ex as AxiosError
|
|
181
|
-
if (axiosError.isAxiosError) {
|
|
182
|
-
if (axiosError?.response?.status !== undefined) {
|
|
183
|
-
result.http = result.http ?? {}
|
|
184
|
-
result.http.status = axiosError?.response?.status
|
|
185
|
-
}
|
|
186
|
-
if (axiosError?.code !== undefined) {
|
|
187
|
-
result.http = result.http ?? {}
|
|
188
|
-
result.http.code = axiosError?.code
|
|
189
|
-
}
|
|
190
|
-
return result
|
|
191
|
-
} else {
|
|
192
|
-
throw ex
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return result
|
|
196
|
-
}
|
|
197
|
-
}
|
package/src/Witness/index.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
3
|
-
"nodes": [
|
|
4
|
-
{
|
|
5
|
-
"config": {
|
|
6
|
-
"name": "ApiCall",
|
|
7
|
-
"schema": "network.xyo.node.config"
|
|
8
|
-
},
|
|
9
|
-
"modules": {
|
|
10
|
-
"public": [
|
|
11
|
-
{
|
|
12
|
-
"config": {
|
|
13
|
-
"language": "javascript",
|
|
14
|
-
"name": "ApiCallWitness",
|
|
15
|
-
"queries": {
|
|
16
|
-
"limit": 1
|
|
17
|
-
},
|
|
18
|
-
"schema": "network.xyo.api.call.witness.config",
|
|
19
|
-
"uriTemplate": "https://api.opensea.io/api/v2/chain/ethereum/account/${address}/nfts"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"config": {
|
|
24
|
-
"language": "javascript",
|
|
25
|
-
"name": "ApiCallSentinel",
|
|
26
|
-
"schema": "network.xyo.sentinel.config",
|
|
27
|
-
"synchronous": "true",
|
|
28
|
-
"tasks": [
|
|
29
|
-
{
|
|
30
|
-
"input": true,
|
|
31
|
-
"mod": "ApiCallWitness"
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
"schema": "network.xyo.manifest"
|
|
41
|
-
}
|
package/src/index.ts
DELETED
package/src/lib/checkIpfsUrl.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { assertEx, URL } from '@xylabs/sdk-js'
|
|
2
|
-
|
|
3
|
-
const allowIpfsIoRepair = true
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Returns the equivalent IPFS gateway URL for the supplied URL.
|
|
7
|
-
* @param urlToCheck The URL to check
|
|
8
|
-
* @returns If the supplied URL is an IPFS URL, it converts the URL to the
|
|
9
|
-
* equivalent IPFS gateway URL. Otherwise, returns the original URL.
|
|
10
|
-
*/
|
|
11
|
-
export const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {
|
|
12
|
-
try {
|
|
13
|
-
const url = new URL(urlToCheck)
|
|
14
|
-
let protocol = url.protocol
|
|
15
|
-
let host = url.host
|
|
16
|
-
let path = url.pathname
|
|
17
|
-
const query = url.search
|
|
18
|
-
if (protocol === 'ipfs:') {
|
|
19
|
-
protocol = 'https:'
|
|
20
|
-
host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')
|
|
21
|
-
path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`
|
|
22
|
-
const root = `${protocol}//${host}/${path}`
|
|
23
|
-
return query?.length > 0 ? `${root}?${query}` : root
|
|
24
|
-
} else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {
|
|
25
|
-
protocol = 'https:'
|
|
26
|
-
host = assertEx(ipfsGateway, () => 'No ipfsGateway provided')
|
|
27
|
-
const pathParts = path.split('/')
|
|
28
|
-
if (pathParts[0] === 'ipfs') {
|
|
29
|
-
pathParts.shift()
|
|
30
|
-
}
|
|
31
|
-
path = pathParts.join('/')
|
|
32
|
-
const root = `${protocol}//${host}/${path}`
|
|
33
|
-
return query?.length > 0 ? `${root}?${query}` : root
|
|
34
|
-
} else {
|
|
35
|
-
return urlToCheck
|
|
36
|
-
}
|
|
37
|
-
} catch {
|
|
38
|
-
// const error = ex as Error
|
|
39
|
-
// console.error(`${error.name}:${error.message} [${urlToCheck}]`)
|
|
40
|
-
// console.log(error.stack)
|
|
41
|
-
return urlToCheck
|
|
42
|
-
}
|
|
43
|
-
}
|
package/src/lib/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './checkIpfsUrl.ts'
|
package/src/types.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
declare module 'es6-dynamic-template'
|