mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
wip provider updates add default http method & set headers and method to all calls
This commit is contained in:
parent
04d850b6d6
commit
5445e210ba
@ -33,6 +33,7 @@
|
|||||||
"test:factory": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/NftFactory.test.ts'",
|
"test:factory": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/NftFactory.test.ts'",
|
||||||
"test:router": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/pools/Router.test.ts'",
|
"test:router": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/pools/Router.test.ts'",
|
||||||
"test:publishAll": "mocha --config=test/integration/.mocharc.json --node-env=test --exit 'test/integration/PublishFlows.test.ts'",
|
"test:publishAll": "mocha --config=test/integration/.mocharc.json --node-env=test --exit 'test/integration/PublishFlows.test.ts'",
|
||||||
|
"test:provider": "mocha --config=test/integration/.mocharc.json --node-env=test --exit 'test/integration/Provider.test.ts'",
|
||||||
"test:unit": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/**/*.test.ts'",
|
"test:unit": "mocha --config=test/unit/.mocharc.json --node-env=test --exit 'test/unit/**/*.test.ts'",
|
||||||
"test:unit:cover": "nyc --report-dir coverage/unit npm run test:unit",
|
"test:unit:cover": "nyc --report-dir coverage/unit npm run test:unit",
|
||||||
"test:integration": "mocha --config=test/integration/.mocharc.json --node-env=test --exit 'test/integration/**/*.test.ts'",
|
"test:integration": "mocha --config=test/integration/.mocharc.json --node-env=test --exit 'test/integration/**/*.test.ts'",
|
||||||
|
@ -35,4 +35,10 @@ export interface FileMetadata {
|
|||||||
* @type {string}
|
* @type {string}
|
||||||
*/
|
*/
|
||||||
method?: string
|
method?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check if file exists
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
valid?: boolean
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import Web3 from 'web3'
|
import Web3 from 'web3'
|
||||||
import { LoggerInstance, getData } from '../utils'
|
import { LoggerInstance, getData, crossFetchGeneric } from '../utils'
|
||||||
import {
|
import {
|
||||||
Asset,
|
|
||||||
FileMetadata,
|
FileMetadata,
|
||||||
ComputeJob,
|
ComputeJob,
|
||||||
ComputeOutput,
|
ComputeOutput,
|
||||||
@ -89,7 +88,14 @@ export class Provider {
|
|||||||
: null
|
: null
|
||||||
if (!path) return null
|
if (!path) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(path + `?userAddress=${consumerAddress}`)
|
const response = await fetchMethod(
|
||||||
|
'GET',
|
||||||
|
path + `?userAddress=${consumerAddress}`,
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
)
|
||||||
return String((await response.json()).nonce)
|
return String((await response.json()).nonce)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
LoggerInstance.error(e)
|
LoggerInstance.error(e)
|
||||||
@ -154,8 +160,9 @@ export class Provider {
|
|||||||
did: string,
|
did: string,
|
||||||
serviceId: number,
|
serviceId: number,
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
fetchMethod: any
|
fetchMethod?: any
|
||||||
): Promise<FileMetadata[]> {
|
): Promise<FileMetadata[]> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -168,8 +175,12 @@ export class Provider {
|
|||||||
: null
|
: null
|
||||||
if (!path) return null
|
if (!path) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(path, JSON.stringify(args))
|
const response = await preferedFetch('POST', path, JSON.stringify(args), {
|
||||||
const results: FileMetadata[] = await response.json()
|
'Content-Type': 'application/json'
|
||||||
|
})
|
||||||
|
const results: FileMetadata[] = response.data
|
||||||
|
? response.data
|
||||||
|
: await response.json()
|
||||||
for (const result of results) {
|
for (const result of results) {
|
||||||
files.push(result)
|
files.push(result)
|
||||||
}
|
}
|
||||||
@ -188,8 +199,9 @@ export class Provider {
|
|||||||
public async checkFileUrl(
|
public async checkFileUrl(
|
||||||
url: string,
|
url: string,
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
fetchMethod: any
|
fetchMethod?: any
|
||||||
): Promise<FileMetadata[]> {
|
): Promise<FileMetadata[]> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -202,8 +214,12 @@ export class Provider {
|
|||||||
: null
|
: null
|
||||||
if (!path) return null
|
if (!path) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod('POST', path, JSON.stringify(args))
|
const response = await preferedFetch('POST', path, JSON.stringify(args), {
|
||||||
const results: FileMetadata[] = await response.json()
|
'Content-Type': 'application/json'
|
||||||
|
})
|
||||||
|
const results: FileMetadata[] = response.data
|
||||||
|
? response.data
|
||||||
|
: await response.json()
|
||||||
for (const result of results) {
|
for (const result of results) {
|
||||||
files.push(result)
|
files.push(result)
|
||||||
}
|
}
|
||||||
@ -229,10 +245,11 @@ export class Provider {
|
|||||||
fileIndex: number,
|
fileIndex: number,
|
||||||
consumerAddress: string,
|
consumerAddress: string,
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
getMethod: any,
|
fetchMethod?: any,
|
||||||
userCustomParameters?: UserCustomParameters,
|
userCustomParameters?: UserCustomParameters,
|
||||||
computeEnv?: string
|
computeEnv?: string
|
||||||
): Promise<ProviderInitialize> {
|
): Promise<ProviderInitialize> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -251,8 +268,12 @@ export class Provider {
|
|||||||
initializeUrl += '&userdata=' + encodeURI(JSON.stringify(userCustomParameters))
|
initializeUrl += '&userdata=' + encodeURI(JSON.stringify(userCustomParameters))
|
||||||
if (computeEnv) initializeUrl += '&computeEnv=' + encodeURI(computeEnv)
|
if (computeEnv) initializeUrl += '&computeEnv=' + encodeURI(computeEnv)
|
||||||
try {
|
try {
|
||||||
const response = await getMethod('GET', initializeUrl)
|
const response = await preferedFetch('GET', initializeUrl, null, {
|
||||||
const results: ProviderInitialize = await response.json()
|
'Content-Type': 'application/json'
|
||||||
|
})
|
||||||
|
const results: ProviderInitialize = response.data
|
||||||
|
? response.data
|
||||||
|
: await response.json()
|
||||||
return results
|
return results
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
LoggerInstance.error(e)
|
LoggerInstance.error(e)
|
||||||
@ -319,7 +340,7 @@ export class Provider {
|
|||||||
public async computeStart(
|
public async computeStart(
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
web3: Web3,
|
web3: Web3,
|
||||||
fetchMethod: any,
|
fetchMethod?: any,
|
||||||
consumerAddress: string,
|
consumerAddress: string,
|
||||||
computeEnv: string,
|
computeEnv: string,
|
||||||
dataset: ComputeAsset,
|
dataset: ComputeAsset,
|
||||||
@ -327,6 +348,7 @@ export class Provider {
|
|||||||
additionalDatasets?: ComputeAsset[],
|
additionalDatasets?: ComputeAsset[],
|
||||||
output?: ComputeOutput
|
output?: ComputeOutput
|
||||||
): Promise<ComputeJob | ComputeJob[]> {
|
): Promise<ComputeJob | ComputeJob[]> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -357,7 +379,7 @@ export class Provider {
|
|||||||
if (output) payload.output = output
|
if (output) payload.output = output
|
||||||
if (!computeStartUrl) return null
|
if (!computeStartUrl) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(
|
const response = await preferedFetch(
|
||||||
'POST',
|
'POST',
|
||||||
computeStartUrl,
|
computeStartUrl,
|
||||||
JSON.stringify(payload),
|
JSON.stringify(payload),
|
||||||
@ -366,7 +388,7 @@ export class Provider {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const params = await response.json()
|
const params = response.data ? response.data : await response.json()
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
console.error('Compute start failed:', response.status, response.statusText)
|
console.error('Compute start failed:', response.status, response.statusText)
|
||||||
@ -395,8 +417,9 @@ export class Provider {
|
|||||||
jobId: string,
|
jobId: string,
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
web3: Web3,
|
web3: Web3,
|
||||||
fetchMethod: any
|
fetchMethod?: any
|
||||||
): Promise<ComputeJob | ComputeJob[]> {
|
): Promise<ComputeJob | ComputeJob[]> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -432,9 +455,16 @@ export class Provider {
|
|||||||
|
|
||||||
if (!computeStopUrl) return null
|
if (!computeStopUrl) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(computeStopUrl, JSON.stringify(payload))
|
const response = await preferedFetch(
|
||||||
|
'PUT',
|
||||||
|
computeStopUrl,
|
||||||
|
JSON.stringify(payload),
|
||||||
|
{
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
)
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const params = await response.json()
|
const params = response.data ? response.data : await response.json()
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
LoggerInstance.error('Compute stop failed:', response.status, response.statusText)
|
LoggerInstance.error('Compute stop failed:', response.status, response.statusText)
|
||||||
@ -459,7 +489,7 @@ export class Provider {
|
|||||||
*/
|
*/
|
||||||
public async computeStatus(
|
public async computeStatus(
|
||||||
providerUri: string,
|
providerUri: string,
|
||||||
fetchMethod: any,
|
fetchMethod?: any,
|
||||||
jobId?: string,
|
jobId?: string,
|
||||||
did?: string,
|
did?: string,
|
||||||
consumerAddress?: string
|
consumerAddress?: string
|
||||||
@ -467,6 +497,8 @@ export class Provider {
|
|||||||
if (!jobId && !did && !consumerAddress) {
|
if (!jobId && !did && !consumerAddress) {
|
||||||
throw new Error('You need at least one of jobId, did, consumerAddress')
|
throw new Error('You need at least one of jobId, did, consumerAddress')
|
||||||
}
|
}
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
|
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -482,9 +514,11 @@ export class Provider {
|
|||||||
|
|
||||||
if (!computeStatusUrl) return null
|
if (!computeStatusUrl) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod('GET', computeStatusUrl + url)
|
const response = await preferedFetch('GET', computeStatusUrl + url, null, {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
})
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const params = await response.json()
|
const params = response.data ? response.data : await response.json()
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
LoggerInstance.error(
|
LoggerInstance.error(
|
||||||
@ -577,6 +611,7 @@ export class Provider {
|
|||||||
web3: Web3,
|
web3: Web3,
|
||||||
fetchMethod: any
|
fetchMethod: any
|
||||||
): Promise<ComputeJob | ComputeJob[]> {
|
): Promise<ComputeJob | ComputeJob[]> {
|
||||||
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
const providerEndpoints = await this.getEndpoints(providerUri)
|
const providerEndpoints = await this.getEndpoints(providerUri)
|
||||||
const serviceEndpoints = await this.getServiceEndpoints(
|
const serviceEndpoints = await this.getServiceEndpoints(
|
||||||
providerUri,
|
providerUri,
|
||||||
@ -612,9 +647,16 @@ export class Provider {
|
|||||||
|
|
||||||
if (!computeDeleteUrl) return null
|
if (!computeDeleteUrl) return null
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(computeDeleteUrl, JSON.stringify(payload))
|
const response = await preferedFetch(
|
||||||
|
'DELETE',
|
||||||
|
computeDeleteUrl,
|
||||||
|
JSON.stringify(payload),
|
||||||
|
{
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
)
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const params = await response.json()
|
const params = response.data ? response.data : await response.json()
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
LoggerInstance.error(
|
LoggerInstance.error(
|
||||||
@ -637,11 +679,14 @@ export class Provider {
|
|||||||
* @param {String} fetchMethod fetch client instance
|
* @param {String} fetchMethod fetch client instance
|
||||||
* @return {Promise<boolean>} string
|
* @return {Promise<boolean>} string
|
||||||
*/
|
*/
|
||||||
public async isValidProvider(url: string, fetchMethod: any): Promise<boolean> {
|
public async isValidProvider(url: string, fetchMethod?: any): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
const response = await fetchMethod(url)
|
const preferedFetch = fetchMethod || crossFetchGeneric
|
||||||
|
const response = await preferedFetch('GET', url, null, {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
})
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const params = await response.json()
|
const params = response.data ? response.data : await response.json()
|
||||||
if (params && params.providerAddress) return true
|
if (params && params.providerAddress) return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import config from './config'
|
|
||||||
import { Provider } from '../../src/provider/Provider'
|
import { Provider } from '../../src/provider/Provider'
|
||||||
import { assert } from 'chai'
|
import { assert } from 'chai'
|
||||||
import { fetchData } from '../../src/utils'
|
import { fetchData, crossFetchGeneric } from '../../src/utils'
|
||||||
|
import { FileMetadata } from '../../src/@types'
|
||||||
|
|
||||||
describe('Provider tests', () => {
|
describe('Provider tests', () => {
|
||||||
let providerInstance: Provider
|
let providerInstance: Provider
|
||||||
@ -22,4 +22,13 @@ describe('Provider tests', () => {
|
|||||||
)
|
)
|
||||||
assert(valid === true)
|
assert(valid === true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Alice checks fileinfo', async () => {
|
||||||
|
const fileinfo: FileMetadata[] = await providerInstance.checkFileUrl(
|
||||||
|
'https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-abstract.xml.gz-rss.xml',
|
||||||
|
'http://127.0.0.1:8030',
|
||||||
|
crossFetchGeneric
|
||||||
|
)
|
||||||
|
assert(fileinfo[0].valid === true, 'Sent file is not valid')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user