From 17e61d01084b16ab2af669be08309e6599fa4b9f Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:28:08 -0700 Subject: [PATCH 01/26] allow customProvider on publish --- src/ocean/Assets.ts | 5 +++-- src/ocean/Compute.ts | 5 +++-- src/provider/Provider.ts | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 8181c7b0..9f490d55 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -378,12 +378,13 @@ export class Assets extends Instantiable { creator: Account, cost: string, datePublished: string, - timeout = 0 + timeout = 0, + customProvider?: string ): Promise { return { type: 'access', index: 2, - serviceEndpoint: this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 658e6aec..d0980fa5 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -279,14 +279,15 @@ export class Compute extends Instantiable { datePublished: string, providerAttributes: any, computePrivacy?: ServiceComputePrivacy, - timeout?: number + timeout?: number, + customProvider?: string ): ServiceCompute { const name = 'dataAssetComputingService' if (!timeout) timeout = 3600 const service = { type: 'compute', index: 3, - serviceEndpoint: this.ocean.provider.getComputeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 6502f2a8..877e1be5 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -283,4 +283,22 @@ export class Provider extends Instantiable { public getDownloadEndpoint(): string { return `${this.url}${apiPath}/download` } + + public async isValidProvider(url: string): Promise { + const fetch = this.ocean.utils.fetch.get(url) + await fetch + .then((response: Response) => { + if (response.ok) { + const params = response.json() + if (params) return true + } + return false + }) + .catch((error: Error) => { + this.logger.error('Error validating provider') + this.logger.error(error.message) + return false + }) + return false + } } From 48cb847082d639a9bbe8fa4b1b2ba4117478e59c Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:31:40 -0700 Subject: [PATCH 02/26] extra check --- src/provider/Provider.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 877e1be5..470cd2e0 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -284,13 +284,17 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/download` } + /** Check for a valid provider at URL + * @param {String} url + * @return {Promise} string + */ public async isValidProvider(url: string): Promise { const fetch = this.ocean.utils.fetch.get(url) await fetch .then((response: Response) => { if (response.ok) { const params = response.json() - if (params) return true + if (params['provider-address']) return true } return false }) From 960e90f9ec681567358f80acc6f3dd40a4817dac Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:44:01 -0700 Subject: [PATCH 03/26] extra checks --- src/ocean/Assets.ts | 4 +++- src/ocean/Compute.ts | 4 +++- src/provider/Provider.ts | 12 ++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 9f490d55..e0e53268 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -384,7 +384,9 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, - serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getConsumeEndpointShort() + : this.ocean.provider.getConsumeEndpoint(), attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index d0980fa5..29267462 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -287,7 +287,9 @@ export class Compute extends Instantiable { const service = { type: 'compute', index: 3, - serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getComputeEndpointShort() + : this.ocean.provider.getComputeEndpoint(), attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 470cd2e0..8489b9bb 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -264,8 +264,12 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/nonce` } + public getConsumeEndpointShort(): string { + return `${apiPath}/consume` + } + public getConsumeEndpoint(): string { - return `${this.url}${apiPath}/consume` + return `${this.url}` + this.getConsumeEndpointShort() } public getEncryptEndpoint(): string { @@ -276,8 +280,12 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/publish` } + public getComputeEndpointShort(): string { + return `${apiPath}/compute` + } + public getComputeEndpoint(): string { - return `${this.url}${apiPath}/compute` + return `${this.url}` + this.getComputeEndpointShort() } public getDownloadEndpoint(): string { From cdc5dc8bc6eed30934fce29202b8aef5a168d45c Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 07:13:45 -0700 Subject: [PATCH 04/26] add tests --- test/integration/Provider.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/integration/Provider.test.ts diff --git a/test/integration/Provider.test.ts b/test/integration/Provider.test.ts new file mode 100644 index 00000000..e3ddcb24 --- /dev/null +++ b/test/integration/Provider.test.ts @@ -0,0 +1,18 @@ +import { Ocean } from '../../src/ocean/Ocean' +import config from './config' +import { assert } from 'console' + +describe('Provider tests', () => { + let ocean + it('Initialize Ocean', async () => { + ocean = await Ocean.getInstance(config) + }) + it('Alice tests invalid provider', async () => { + const valid = ocean.provider.isValidProvider('http://example.net') + assert(valid === false) + }) + it('Alice tests valid provider', async () => { + const valid = ocean.provider.isValidProvider('http://127.0.0.1:8030') + assert(valid === true) + }) +}) From c367fbba6c9bcb58a867d0a85bd4a6a6f1a9b8cf Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Wed, 16 Sep 2020 18:01:08 +0300 Subject: [PATCH 05/26] Update .travis.yml --- .travis.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1db2198d..aaf87cac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,11 +19,14 @@ before_script: # Barge setup - git clone https://github.com/oceanprotocol/barge - cd barge - - git checkout v3 - - export PROVIDER_VERSION=latest + - git checkout feature/ocean-contracts + - export PROVIDER_VERSION=v0.3.0 + - export ADDRESS_FILE="${HOME}/.ocean/ocean-contracts/artifacts/address.json" + - export AQUARIUS_URI="http://172.15.0.5:5000" + - export DEPLOY_CONTRACTS=true - bash -x start_ocean.sh --no-dashboard 2>&1 > start_ocean.log & - cd .. - - sleep 300 + - ./scripts/waitforcontracts.sh script: - npm test From 3e79a3a37f2cf249060c5e40cee846c5f2c27e77 Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Wed, 16 Sep 2020 18:12:35 +0300 Subject: [PATCH 06/26] Update .travis.yml --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2b461a14..201312d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,15 +19,11 @@ before_script: # Barge setup - git clone https://github.com/oceanprotocol/barge - cd barge - - git checkout feature/ocean-contracts + - git checkout v3 - export PROVIDER_VERSION=v0.3.0 - - export ADDRESS_FILE="${HOME}/.ocean/ocean-contracts/artifacts/address.json" - - export AQUARIUS_URI="http://172.15.0.5:5000" - - export DEPLOY_CONTRACTS=true - - bash -x start_ocean.sh --no-dashboard 2>&1 > start_ocean.log & - cd .. - - ./scripts/waitforcontracts.sh + - sleep 300 script: - npm test From 11b58cb8c0c20b1e5bea3fce7bbb483ecc612232 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 00:14:02 -0700 Subject: [PATCH 07/26] more customProvider code --- src/ocean/Assets.ts | 43 +++++++++++++++++++++++----------------- src/ocean/Compute.ts | 6 ++++++ src/provider/Provider.ts | 10 ++++++++-- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index c37820ea..03f0c560 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -16,6 +16,7 @@ import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' import { WebServiceConnector } from './utils/WebServiceConnector' import { DataTokens } from '../lib' import BigNumber from 'bignumber.js' +import { Provider } from '../provider/Provider' export enum CreateProgressStep { CreatingDataToken, @@ -56,6 +57,7 @@ export class Assets extends Instantiable { * @param {String} cap Maximum cap (Number) - will be converted to wei * @param {String} name Token name * @param {String} symbol Token symbol + * @param {String} customProviderURL * @return {Promise} */ public create( @@ -65,7 +67,8 @@ export class Assets extends Instantiable { dtAddress?: string, cap?: string, name?: string, - symbol?: string + symbol?: string, + customProviderURL?: string ): SubscribablePromise { this.logger.log('Creating asset') return new SubscribablePromise(async (observer) => { @@ -93,7 +96,12 @@ export class Assets extends Instantiable { this.logger.log('Encrypting files') observer.next(CreateProgressStep.EncryptingFiles) - const encryptedFiles = await this.ocean.provider.encrypt( + let provider + if (customProviderURL) { + provider = new Provider(this.instanceConfig) + provider.setBaseUrl(customProviderURL) + } else provider = this.ocean.provider + const encryptedFiles = await provider.encrypt( did.getId(), metadata.main.files, publisher @@ -386,9 +394,7 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getConsumeEndpointShort() - : this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.url, attributes: { main: { creator: creator.getId(), @@ -416,14 +422,12 @@ export class Assets extends Instantiable { did: string, serviceType: string, consumerAddress: string, - serviceIndex = -1 + serviceIndex = -1, + serviceEndpoint: string ): Promise { - const res = await this.ocean.provider.initialize( - did, - serviceIndex, - serviceType, - consumerAddress - ) + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const res = await provider.initialize(did, serviceIndex, serviceType, consumerAddress) if (res === null) return null const providerData = JSON.parse(res) return providerData @@ -445,11 +449,12 @@ export class Assets extends Instantiable { serviceIndex = -1, mpAddress?: string ): Promise { + let service if (serviceIndex === -1) { - const service = await this.getServiceByType(did, serviceType) + service = await this.getServiceByType(did, serviceType) serviceIndex = service.index } else { - const service = await this.getServiceByIndex(did, serviceIndex) + service = await this.getServiceByIndex(did, serviceIndex) serviceType = service.type } const { datatokens } = this.ocean @@ -458,10 +463,11 @@ export class Assets extends Instantiable { did, serviceType, consumerAddress, - serviceIndex + serviceIndex, + service.serviceEndpoint ) if (!providerData) return null - const service = await this.getServiceByIndex(did, serviceIndex) + service = await this.getServiceByIndex(did, serviceIndex) const previousOrder = await datatokens.getPreviousValidOrders( providerData.dataToken, providerData.numTokens, @@ -526,8 +532,9 @@ export class Assets extends Instantiable { destination = destination ? `${destination}/datafile.${ddo.shortId()}.${service.index}/` : undefined - - await this.ocean.provider.download( + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + await provider.download( did, txId, tokenAddress, diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 7515a557..5f6eebbc 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -6,6 +6,7 @@ import { SubscribablePromise } from '../utils' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' import { Output } from './interfaces/ComputeOutput' import { ComputeJob } from './interfaces/ComputeJob' +import { Provider } from '../provider/Provider' export enum OrderProgressStep { TransferDataToken @@ -87,7 +88,12 @@ export class Compute extends Instantiable { algorithmDataToken?: string ): Promise { output = this.checkOutput(consumerAccount, output) + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('access') + const { serviceEndpoint } = service if (did && txId) { + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) const computeJobsList = await this.ocean.provider.compute( 'post', did, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 8489b9bb..430f3a75 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -18,16 +18,22 @@ const apiPath = '/api/v1/services' */ export class Provider extends Instantiable { public nonce: string - private get url() { - return this.config.providerUri + private baseUrl: string + public get url() { + return this.baseUrl } constructor(config: InstantiableConfig) { super() this.setInstanceConfig(config) + this.baseUrl = this.config.providerUri this.nonce = '0' } + public setBaseUrl(url: string): void { + this.baseUrl = url + } + public async createSignature(account: Account, agreementId: string): Promise { const signature = await this.ocean.utils.signature.signText( noZeroX(agreementId), From ae4011914b2749d3fa467d513c49ef97a8d22ed6 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 00:33:35 -0700 Subject: [PATCH 08/26] update travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8a150c37..1a5d0c5d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,4 +47,4 @@ deploy: api_key: ${NPM_TOKEN} skip_cleanup: true on: - tags: true + tags: true \ No newline at end of file From f75e45500cc74baac6c3de184b6be50908da4b2d Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:28:08 -0700 Subject: [PATCH 09/26] allow customProvider on publish --- src/ocean/Assets.ts | 5 +++-- src/ocean/Compute.ts | 5 +++-- src/provider/Provider.ts | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 27332382..aee93a4c 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -379,12 +379,13 @@ export class Assets extends Instantiable { creator: Account, cost: string, datePublished: string, - timeout = 0 + timeout = 0, + customProvider?: string ): Promise { return { type: 'access', index: 2, - serviceEndpoint: this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 597bc454..416b9a47 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -279,14 +279,15 @@ export class Compute extends Instantiable { datePublished: string, providerAttributes: any, computePrivacy?: ServiceComputePrivacy, - timeout?: number + timeout?: number, + customProvider?: string ): ServiceCompute { const name = 'dataAssetComputingService' if (!timeout) timeout = 3600 const service = { type: 'compute', index: 3, - serviceEndpoint: this.ocean.provider.getComputeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 6502f2a8..877e1be5 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -283,4 +283,22 @@ export class Provider extends Instantiable { public getDownloadEndpoint(): string { return `${this.url}${apiPath}/download` } + + public async isValidProvider(url: string): Promise { + const fetch = this.ocean.utils.fetch.get(url) + await fetch + .then((response: Response) => { + if (response.ok) { + const params = response.json() + if (params) return true + } + return false + }) + .catch((error: Error) => { + this.logger.error('Error validating provider') + this.logger.error(error.message) + return false + }) + return false + } } From ed5e3e7b9377042772d2b28de720a8162f8257a0 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:31:40 -0700 Subject: [PATCH 10/26] extra check --- src/provider/Provider.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 877e1be5..470cd2e0 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -284,13 +284,17 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/download` } + /** Check for a valid provider at URL + * @param {String} url + * @return {Promise} string + */ public async isValidProvider(url: string): Promise { const fetch = this.ocean.utils.fetch.get(url) await fetch .then((response: Response) => { if (response.ok) { const params = response.json() - if (params) return true + if (params['provider-address']) return true } return false }) From 554ab76dc67c56d23210955292624d220fbcd42f Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:44:01 -0700 Subject: [PATCH 11/26] extra checks --- src/ocean/Assets.ts | 4 +++- src/ocean/Compute.ts | 4 +++- src/provider/Provider.ts | 12 ++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index aee93a4c..78d4ce8d 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -385,7 +385,9 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, - serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getConsumeEndpointShort() + : this.ocean.provider.getConsumeEndpoint(), attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 416b9a47..7515a557 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -287,7 +287,9 @@ export class Compute extends Instantiable { const service = { type: 'compute', index: 3, - serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getComputeEndpointShort() + : this.ocean.provider.getComputeEndpoint(), attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 470cd2e0..8489b9bb 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -264,8 +264,12 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/nonce` } + public getConsumeEndpointShort(): string { + return `${apiPath}/consume` + } + public getConsumeEndpoint(): string { - return `${this.url}${apiPath}/consume` + return `${this.url}` + this.getConsumeEndpointShort() } public getEncryptEndpoint(): string { @@ -276,8 +280,12 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/publish` } + public getComputeEndpointShort(): string { + return `${apiPath}/compute` + } + public getComputeEndpoint(): string { - return `${this.url}${apiPath}/compute` + return `${this.url}` + this.getComputeEndpointShort() } public getDownloadEndpoint(): string { From e71180e2df6997fcfebde762cfc3ddb0eab9c66a Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 07:13:45 -0700 Subject: [PATCH 12/26] add tests --- test/integration/Provider.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/integration/Provider.test.ts diff --git a/test/integration/Provider.test.ts b/test/integration/Provider.test.ts new file mode 100644 index 00000000..e3ddcb24 --- /dev/null +++ b/test/integration/Provider.test.ts @@ -0,0 +1,18 @@ +import { Ocean } from '../../src/ocean/Ocean' +import config from './config' +import { assert } from 'console' + +describe('Provider tests', () => { + let ocean + it('Initialize Ocean', async () => { + ocean = await Ocean.getInstance(config) + }) + it('Alice tests invalid provider', async () => { + const valid = ocean.provider.isValidProvider('http://example.net') + assert(valid === false) + }) + it('Alice tests valid provider', async () => { + const valid = ocean.provider.isValidProvider('http://127.0.0.1:8030') + assert(valid === true) + }) +}) From 796b7021f948ada773860c3fdb7584fe6dd497de Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 00:14:02 -0700 Subject: [PATCH 13/26] more customProvider code --- src/ocean/Assets.ts | 43 +++++++++++++++++++++++----------------- src/ocean/Compute.ts | 6 ++++++ src/provider/Provider.ts | 10 ++++++++-- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 78d4ce8d..1947407b 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -16,6 +16,7 @@ import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' import { WebServiceConnector } from './utils/WebServiceConnector' import { DataTokens } from '../lib' import BigNumber from 'bignumber.js' +import { Provider } from '../provider/Provider' export enum CreateProgressStep { CreatingDataToken, @@ -56,6 +57,7 @@ export class Assets extends Instantiable { * @param {String} cap Maximum cap (Number) - will be converted to wei * @param {String} name Token name * @param {String} symbol Token symbol + * @param {String} customProviderURL * @return {Promise} */ public create( @@ -65,7 +67,8 @@ export class Assets extends Instantiable { dtAddress?: string, cap?: string, name?: string, - symbol?: string + symbol?: string, + customProviderURL?: string ): SubscribablePromise { this.logger.log('Creating asset') return new SubscribablePromise(async (observer) => { @@ -93,7 +96,12 @@ export class Assets extends Instantiable { this.logger.log('Encrypting files') observer.next(CreateProgressStep.EncryptingFiles) - const encryptedFiles = await this.ocean.provider.encrypt( + let provider + if (customProviderURL) { + provider = new Provider(this.instanceConfig) + provider.setBaseUrl(customProviderURL) + } else provider = this.ocean.provider + const encryptedFiles = await provider.encrypt( did.getId(), metadata.main.files, publisher @@ -385,9 +393,7 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getConsumeEndpointShort() - : this.ocean.provider.getConsumeEndpoint(), + serviceEndpoint: customProvider || this.ocean.provider.url, attributes: { main: { creator: creator.getId(), @@ -415,14 +421,12 @@ export class Assets extends Instantiable { did: string, serviceType: string, consumerAddress: string, - serviceIndex = -1 + serviceIndex = -1, + serviceEndpoint: string ): Promise { - const res = await this.ocean.provider.initialize( - did, - serviceIndex, - serviceType, - consumerAddress - ) + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const res = await provider.initialize(did, serviceIndex, serviceType, consumerAddress) if (res === null) return null const providerData = JSON.parse(res) return providerData @@ -444,11 +448,12 @@ export class Assets extends Instantiable { serviceIndex = -1, mpAddress?: string ): Promise { + let service if (serviceIndex === -1) { - const service = await this.getServiceByType(did, serviceType) + service = await this.getServiceByType(did, serviceType) serviceIndex = service.index } else { - const service = await this.getServiceByIndex(did, serviceIndex) + service = await this.getServiceByIndex(did, serviceIndex) serviceType = service.type } const { datatokens } = this.ocean @@ -457,10 +462,11 @@ export class Assets extends Instantiable { did, serviceType, consumerAddress, - serviceIndex + serviceIndex, + service.serviceEndpoint ) if (!providerData) return null - const service = await this.getServiceByIndex(did, serviceIndex) + service = await this.getServiceByIndex(did, serviceIndex) const previousOrder = await datatokens.getPreviousValidOrders( providerData.dataToken, providerData.numTokens, @@ -525,8 +531,9 @@ export class Assets extends Instantiable { destination = destination ? `${destination}/datafile.${ddo.shortId()}.${service.index}/` : undefined - - await this.ocean.provider.download( + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + await provider.download( did, txId, tokenAddress, diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 7515a557..5f6eebbc 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -6,6 +6,7 @@ import { SubscribablePromise } from '../utils' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' import { Output } from './interfaces/ComputeOutput' import { ComputeJob } from './interfaces/ComputeJob' +import { Provider } from '../provider/Provider' export enum OrderProgressStep { TransferDataToken @@ -87,7 +88,12 @@ export class Compute extends Instantiable { algorithmDataToken?: string ): Promise { output = this.checkOutput(consumerAccount, output) + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('access') + const { serviceEndpoint } = service if (did && txId) { + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) const computeJobsList = await this.ocean.provider.compute( 'post', did, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 8489b9bb..430f3a75 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -18,16 +18,22 @@ const apiPath = '/api/v1/services' */ export class Provider extends Instantiable { public nonce: string - private get url() { - return this.config.providerUri + private baseUrl: string + public get url() { + return this.baseUrl } constructor(config: InstantiableConfig) { super() this.setInstanceConfig(config) + this.baseUrl = this.config.providerUri this.nonce = '0' } + public setBaseUrl(url: string): void { + this.baseUrl = url + } + public async createSignature(account: Account, agreementId: string): Promise { const signature = await this.ocean.utils.signature.signText( noZeroX(agreementId), From 671c170377040384b211455368fad06bf311417f Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 00:33:35 -0700 Subject: [PATCH 14/26] update travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8a150c37..1a5d0c5d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,4 +47,4 @@ deploy: api_key: ${NPM_TOKEN} skip_cleanup: true on: - tags: true + tags: true \ No newline at end of file From 565590962316226ae9a141ca1007b68250825bb6 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:28:08 -0700 Subject: [PATCH 15/26] allow customProvider on publish --- src/ocean/Assets.ts | 4 ++++ src/ocean/Compute.ts | 6 +++++- src/provider/Provider.ts | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 1947407b..b714487b 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -393,7 +393,11 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, +<<<<<<< HEAD serviceEndpoint: customProvider || this.ocean.provider.url, +======= + serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), +>>>>>>> 17e61d0... allow customProvider on publish attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 5f6eebbc..dcc1a4e9 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -94,7 +94,7 @@ export class Compute extends Instantiable { if (did && txId) { const provider = new Provider(this.instanceConfig) provider.setBaseUrl(serviceEndpoint) - const computeJobsList = await this.ocean.provider.compute( + const computeJobsList = await provider.compute( 'post', did, consumerAccount, @@ -293,9 +293,13 @@ export class Compute extends Instantiable { const service = { type: 'compute', index: 3, +<<<<<<< HEAD serviceEndpoint: customProvider ? customProvider + this.ocean.provider.getComputeEndpointShort() : this.ocean.provider.getComputeEndpoint(), +======= + serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), +>>>>>>> 17e61d0... allow customProvider on publish attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 430f3a75..a76a6c94 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -298,17 +298,24 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/download` } +<<<<<<< HEAD /** Check for a valid provider at URL * @param {String} url * @return {Promise} string */ +======= +>>>>>>> 17e61d0... allow customProvider on publish public async isValidProvider(url: string): Promise { const fetch = this.ocean.utils.fetch.get(url) await fetch .then((response: Response) => { if (response.ok) { const params = response.json() +<<<<<<< HEAD if (params['provider-address']) return true +======= + if (params) return true +>>>>>>> 17e61d0... allow customProvider on publish } return false }) From 20493dfca4b8e67dfd2b581a9b5f122436c3c2d4 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:31:40 -0700 Subject: [PATCH 16/26] extra check --- src/provider/Provider.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index a76a6c94..ed2ab441 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -299,23 +299,33 @@ export class Provider extends Instantiable { } <<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> 48cb847... extra check /** Check for a valid provider at URL * @param {String} url * @return {Promise} string */ +<<<<<<< HEAD ======= >>>>>>> 17e61d0... allow customProvider on publish +======= +>>>>>>> 48cb847... extra check public async isValidProvider(url: string): Promise { const fetch = this.ocean.utils.fetch.get(url) await fetch .then((response: Response) => { if (response.ok) { const params = response.json() +<<<<<<< HEAD <<<<<<< HEAD if (params['provider-address']) return true ======= if (params) return true >>>>>>> 17e61d0... allow customProvider on publish +======= + if (params['provider-address']) return true +>>>>>>> 48cb847... extra check } return false }) From d10766d967117ad496bce29a9828f2d4f12faef7 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 16 Sep 2020 06:44:01 -0700 Subject: [PATCH 17/26] extra checks --- src/ocean/Assets.ts | 6 ++++++ src/ocean/Compute.ts | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index b714487b..607737a3 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -393,11 +393,17 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, +<<<<<<< HEAD <<<<<<< HEAD serviceEndpoint: customProvider || this.ocean.provider.url, ======= serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), >>>>>>> 17e61d0... allow customProvider on publish +======= + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getConsumeEndpointShort() + : this.ocean.provider.getConsumeEndpoint(), +>>>>>>> 960e90f... extra checks attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index dcc1a4e9..5b3903b5 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -293,6 +293,7 @@ export class Compute extends Instantiable { const service = { type: 'compute', index: 3, +<<<<<<< HEAD <<<<<<< HEAD serviceEndpoint: customProvider ? customProvider + this.ocean.provider.getComputeEndpointShort() @@ -300,6 +301,11 @@ export class Compute extends Instantiable { ======= serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), >>>>>>> 17e61d0... allow customProvider on publish +======= + serviceEndpoint: customProvider + ? customProvider + this.ocean.provider.getComputeEndpointShort() + : this.ocean.provider.getComputeEndpoint(), +>>>>>>> 960e90f... extra checks attributes: { main: { name, From 67f6e1633062368badecbe66a39261a37e396966 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 00:14:02 -0700 Subject: [PATCH 18/26] more customProvider code --- src/ocean/Assets.ts | 4 ++++ src/ocean/Compute.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 607737a3..97125c8f 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -394,6 +394,7 @@ export class Assets extends Instantiable { type: 'access', index: 2, <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD serviceEndpoint: customProvider || this.ocean.provider.url, ======= @@ -404,6 +405,9 @@ export class Assets extends Instantiable { ? customProvider + this.ocean.provider.getConsumeEndpointShort() : this.ocean.provider.getConsumeEndpoint(), >>>>>>> 960e90f... extra checks +======= + serviceEndpoint: customProvider || this.ocean.provider.url, +>>>>>>> 11b58cb... more customProvider code attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 5b3903b5..197a658f 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -94,7 +94,11 @@ export class Compute extends Instantiable { if (did && txId) { const provider = new Provider(this.instanceConfig) provider.setBaseUrl(serviceEndpoint) +<<<<<<< HEAD const computeJobsList = await provider.compute( +======= + const computeJobsList = await this.ocean.provider.compute( +>>>>>>> 11b58cb... more customProvider code 'post', did, consumerAccount, From 86656490d8b0e295dbd06da1ca0036b07dd62d1c Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 15:11:37 -0700 Subject: [PATCH 19/26] use custom provider --- src/ocean/Assets.ts | 18 ------------- src/ocean/Compute.ts | 57 ++++++++++++++++++---------------------- src/provider/Provider.ts | 31 +++------------------- 3 files changed, 29 insertions(+), 77 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 95629d68..1947407b 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -393,25 +393,7 @@ export class Assets extends Instantiable { return { type: 'access', index: 2, -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD serviceEndpoint: customProvider || this.ocean.provider.url, -======= - serviceEndpoint: customProvider || this.ocean.provider.getConsumeEndpoint(), ->>>>>>> 17e61d0... allow customProvider on publish -======= - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getConsumeEndpointShort() - : this.ocean.provider.getConsumeEndpoint(), ->>>>>>> 960e90f... extra checks -======= - serviceEndpoint: customProvider || this.ocean.provider.url, ->>>>>>> 11b58cb... more customProvider code -======= - serviceEndpoint: customProvider || this.ocean.provider.url, ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 2a53eb67..9963196e 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -89,19 +89,12 @@ export class Compute extends Instantiable { ): Promise { output = this.checkOutput(consumerAccount, output) const ddo = await this.ocean.assets.resolve(did) - const service = ddo.findServiceByType('access') + const service = ddo.findServiceByType('compute') const { serviceEndpoint } = service if (did && txId) { const provider = new Provider(this.instanceConfig) provider.setBaseUrl(serviceEndpoint) -<<<<<<< HEAD -<<<<<<< HEAD const computeJobsList = await provider.compute( -======= -======= ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 - const computeJobsList = await this.ocean.provider.compute( ->>>>>>> 11b58cb... more customProvider code 'post', did, consumerAccount, @@ -132,7 +125,12 @@ export class Compute extends Instantiable { did: string, jobId: string ): Promise { - const computeJobsList = await this.ocean.provider.compute( + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('compute') + const { serviceEndpoint } = service + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const computeJobsList = await provider.compute( 'put', did, consumerAccount, @@ -156,7 +154,12 @@ export class Compute extends Instantiable { did: string, jobId: string ): Promise { - const computeJobsList = await this.ocean.provider.compute( + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('compute') + const { serviceEndpoint } = service + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const computeJobsList = await provider.compute( 'delete', did, consumerAccount, @@ -180,7 +183,12 @@ export class Compute extends Instantiable { did?: string, jobId?: string ): Promise { - const computeJobsList = await this.ocean.provider.compute( + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('compute') + const { serviceEndpoint } = service + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const computeJobsList = await provider.compute( 'get', did, consumerAccount, @@ -204,7 +212,12 @@ export class Compute extends Instantiable { did: string, jobId: string ): Promise { - const computeJobsList = await this.ocean.provider.compute( + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('compute') + const { serviceEndpoint } = service + const provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + const computeJobsList = await provider.compute( 'get', did, consumerAccount, @@ -300,25 +313,7 @@ export class Compute extends Instantiable { const service = { type: 'compute', index: 3, -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getComputeEndpointShort() - : this.ocean.provider.getComputeEndpoint(), -======= - serviceEndpoint: customProvider || this.ocean.provider.getComputeEndpoint(), ->>>>>>> 17e61d0... allow customProvider on publish -======= - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getComputeEndpointShort() - : this.ocean.provider.getComputeEndpoint(), ->>>>>>> 960e90f... extra checks -======= - serviceEndpoint: customProvider - ? customProvider + this.ocean.provider.getComputeEndpointShort() - : this.ocean.provider.getComputeEndpoint(), ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 + serviceEndpoint: customProvider || this.ocean.provider.url, attributes: { main: { name, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 5911c21b..9a3da38b 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -298,44 +298,19 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/download` } -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 48cb847... extra check -======= ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 /** Check for a valid provider at URL * @param {String} url * @return {Promise} string */ -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 17e61d0... allow customProvider on publish -======= ->>>>>>> 48cb847... extra check -======= ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 public async isValidProvider(url: string): Promise { const fetch = this.ocean.utils.fetch.get(url) await fetch .then((response: Response) => { if (response.ok) { const params = response.json() -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD - if (params['provider-address']) return true -======= - if (params) return true ->>>>>>> 17e61d0... allow customProvider on publish -======= - if (params['provider-address']) return true ->>>>>>> 48cb847... extra check -======= - if (params['provider-address']) return true ->>>>>>> ae4011914b2749d3fa467d513c49ef97a8d22ed6 + if(params) + if (params['provider-address']) + return true } return false }) From 3f017924f77f714272e5e004346be1e4a7fc6ff0 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 15:13:47 -0700 Subject: [PATCH 20/26] fix lint --- src/provider/Provider.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 9a3da38b..21bb70aa 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -308,9 +308,7 @@ export class Provider extends Instantiable { .then((response: Response) => { if (response.ok) { const params = response.json() - if(params) - if (params['provider-address']) - return true + if (params) if (params['provider-address']) return true } return false }) From 62f27b01574d39d700abf7fbfcb8eab4f81604a9 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Sat, 19 Sep 2020 15:27:11 -0700 Subject: [PATCH 21/26] fix tests --- src/ocean/Compute.ts | 15 ++++++++++----- src/provider/Provider.ts | 6 ++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 9963196e..95dc11e6 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -183,11 +183,16 @@ export class Compute extends Instantiable { did?: string, jobId?: string ): Promise { - const ddo = await this.ocean.assets.resolve(did) - const service = ddo.findServiceByType('compute') - const { serviceEndpoint } = service - const provider = new Provider(this.instanceConfig) - provider.setBaseUrl(serviceEndpoint) + let provider + if (did) { + const ddo = await this.ocean.assets.resolve(did) + const service = ddo.findServiceByType('compute') + const { serviceEndpoint } = service + provider = new Provider(this.instanceConfig) + provider.setBaseUrl(serviceEndpoint) + } else { + provider = this.ocean.provider + } const computeJobsList = await provider.compute( 'get', did, diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 21bb70aa..dcea0990 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -307,8 +307,10 @@ export class Provider extends Instantiable { await fetch .then((response: Response) => { if (response.ok) { - const params = response.json() - if (params) if (params['provider-address']) return true + try { + const params = response.json() + if (params) if (params['provider-address']) return true + } catch (e) {} } return false }) From 2d989df4450bf172375d83ef3e0aa7c65a4f0fc3 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Tue, 22 Sep 2020 04:06:05 -0700 Subject: [PATCH 22/26] fix namings --- src/ocean/Assets.ts | 12 ++++++------ src/ocean/Compute.ts | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index c920eeef..8e7edc80 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -57,7 +57,7 @@ export class Assets extends Instantiable { * @param {String} cap Maximum cap (Number) - will be converted to wei * @param {String} name Token name * @param {String} symbol Token symbol - * @param {String} customProviderURL + * @param {String} providerUri * @return {Promise} */ public create( @@ -68,7 +68,7 @@ export class Assets extends Instantiable { cap?: string, name?: string, symbol?: string, - customProviderURL?: string + providerUri?: string ): SubscribablePromise { if (!isAddress(dtAddress)) { this.logger.error( @@ -113,9 +113,9 @@ export class Assets extends Instantiable { this.logger.log('Encrypting files') observer.next(CreateProgressStep.EncryptingFiles) let provider - if (customProviderURL) { + if (providerUri) { provider = new Provider(this.instanceConfig) - provider.setBaseUrl(customProviderURL) + provider.setBaseUrl(providerUri) } else provider = this.ocean.provider const encryptedFiles = await provider.encrypt( did.getId(), @@ -404,12 +404,12 @@ export class Assets extends Instantiable { cost: string, datePublished: string, timeout = 0, - customProvider?: string + providerUri?: string ): Promise { return { type: 'access', index: 2, - serviceEndpoint: customProvider || this.ocean.provider.url, + serviceEndpoint: providerUri || this.ocean.provider.url, attributes: { main: { creator: creator.getId(), diff --git a/src/ocean/Compute.ts b/src/ocean/Compute.ts index 95dc11e6..34d496d3 100644 --- a/src/ocean/Compute.ts +++ b/src/ocean/Compute.ts @@ -311,14 +311,14 @@ export class Compute extends Instantiable { providerAttributes: any, computePrivacy?: ServiceComputePrivacy, timeout?: number, - customProvider?: string + providerUri?: string ): ServiceCompute { const name = 'dataAssetComputingService' if (!timeout) timeout = 3600 const service = { type: 'compute', index: 3, - serviceEndpoint: customProvider || this.ocean.provider.url, + serviceEndpoint: providerUri || this.ocean.provider.url, attributes: { main: { name, From 12453777a5010b0798ee804608cd67854212ca54 Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Tue, 22 Sep 2020 14:22:13 +0300 Subject: [PATCH 23/26] Update src/provider/Provider.ts Co-authored-by: Matthias Kretschmann --- src/provider/Provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index dcea0990..c58b1773 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -270,7 +270,7 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/nonce` } - public getConsumeEndpointShort(): string { + public getConsumeEndpointPath(): string { return `${apiPath}/consume` } From f150a398ea7163efcbad42559ce9fd82de54084d Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Tue, 22 Sep 2020 14:22:21 +0300 Subject: [PATCH 24/26] Update src/provider/Provider.ts Co-authored-by: Matthias Kretschmann --- src/provider/Provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index c58b1773..a950399e 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -286,7 +286,7 @@ export class Provider extends Instantiable { return `${this.url}${apiPath}/publish` } - public getComputeEndpointShort(): string { + public getComputeEndpointPath(): string { return `${apiPath}/compute` } From 7f6c192f9a1de7bdb3c3c478ce3f23858a0bc5e4 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Tue, 22 Sep 2020 04:29:06 -0700 Subject: [PATCH 25/26] fix namings --- src/provider/Provider.ts | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index a950399e..7be2963a 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -275,7 +275,7 @@ export class Provider extends Instantiable { } public getConsumeEndpoint(): string { - return `${this.url}` + this.getConsumeEndpointShort() + return `${this.url}` + this.getConsumeEndpointPath() } public getEncryptEndpoint(): string { @@ -291,7 +291,7 @@ export class Provider extends Instantiable { } public getComputeEndpoint(): string { - return `${this.url}` + this.getComputeEndpointShort() + return `${this.url}` + this.getComputeEndpointPath() } public getDownloadEndpoint(): string { @@ -303,22 +303,16 @@ export class Provider extends Instantiable { * @return {Promise} string */ public async isValidProvider(url: string): Promise { - const fetch = this.ocean.utils.fetch.get(url) - await fetch - .then((response: Response) => { - if (response.ok) { - try { - const params = response.json() - if (params) if (params['provider-address']) return true - } catch (e) {} - } - return false - }) - .catch((error: Error) => { - this.logger.error('Error validating provider') - this.logger.error(error.message) - return false - }) - return false + try { + const response = await this.ocean.utils.fetch.get(url) + if (response?.ok) { + const params = response.json() + if (params && params['provider-address']) return true + } + return false + } catch (error) { + this.logger.error(`Error validating provider: ${error.message}`) + return false + } } } From fd64b6cc005f84e512dc44287f569a6c563c6624 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Tue, 22 Sep 2020 04:37:25 -0700 Subject: [PATCH 26/26] fix typo --- src/provider/Provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 7be2963a..562e8cfd 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -306,7 +306,7 @@ export class Provider extends Instantiable { try { const response = await this.ocean.utils.fetch.get(url) if (response?.ok) { - const params = response.json() + const params = await response.json() if (params && params['provider-address']) return true } return false