From ebff69d6f1b49314c29a349e9f413b99b9b9a9b9 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 13 Jan 2021 08:02:32 -0800 Subject: [PATCH 1/5] checkURL interface --- .travis.yml | 1 - src/provider/Provider.ts | 16 ++++++++++++---- test/integration/Provider.test.ts | 6 ++++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 71ac52431..cf00c3b6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,6 @@ before_script: - export AQUARIUS_URI="http://172.15.0.5:5000" - export DEPLOY_CONTRACTS="true" - export CONTRACTS_VERSION=v0.5.7 - - export PROVIDER_VERSION=latest - bash -x start_ocean.sh --no-dashboard 2>&1 > start_ocean.log & - cd .. - ./scripts/waitforcontracts.sh diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 715ad9938..810801bbf 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -11,6 +11,11 @@ import { DDO } from '../ddo/DDO' const apiPath = '/api/v1/services' +export interface urlDetails { + valid: boolean + contentLength?: string + contentType?: string +} /** * Provides an interface for provider service. * Provider service is the technical component executed @@ -73,7 +78,11 @@ export class Provider extends Instantiable { } } - public async checkURL(url: string): Promise> { + /** Get URL details (if possible) + * @param {String} url + * @return {Promise} urlDetails + */ + public async checkURL(url: string): Promise { const args = { url } try { const response = await this.ocean.utils.fetch.post( @@ -81,9 +90,8 @@ export class Provider extends Instantiable { decodeURI(JSON.stringify(args)) ) - const result = await response.json() - - return result.result + const result: urlDetails = await response.json() + return result } catch (e) { this.logger.error(e) throw new Error('HTTP request failed') diff --git a/test/integration/Provider.test.ts b/test/integration/Provider.test.ts index c0c5e93ca..eb07c5a62 100644 --- a/test/integration/Provider.test.ts +++ b/test/integration/Provider.test.ts @@ -19,7 +19,13 @@ describe('Provider tests', () => { it('Check a valid URL', async () => { const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/info.0.json' const response = await ocean.provider.checkURL(url) + assert(response.valid === true) assert(response.contentLength === '1161') assert(response.contentType === 'application/json') }) + it('Check a invalid URL', async () => { + const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/nosuchfile' + const response = await ocean.provider.checkURL(url) + assert(response.valid === false) + }) }) From 49263f66941b3b912ae41bf97c67e2c51aafbb71 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 13 Jan 2021 08:21:13 -0800 Subject: [PATCH 2/5] fix test --- src/provider/Provider.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 810801bbf..acaf6d2c2 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -94,7 +94,8 @@ export class Provider extends Instantiable { return result } catch (e) { this.logger.error(e) - throw new Error('HTTP request failed') + const result: urlDetails = { valid: false } + return result } } From d94ccd3dbdc67bcebe9dd2e650f9b6ad0da8b576 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 13 Jan 2021 09:08:02 -0800 Subject: [PATCH 3/5] remove logger.error --- src/provider/Provider.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index acaf6d2c2..222d71d3c 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -93,7 +93,6 @@ export class Provider extends Instantiable { const result: urlDetails = await response.json() return result } catch (e) { - this.logger.error(e) const result: urlDetails = { valid: false } return result } From 533ef58e36163096e7674ece3242cd2ca0b03438 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 13 Jan 2021 21:36:23 -0800 Subject: [PATCH 4/5] use File interface --- src/provider/Provider.ts | 20 ++++++++++---------- test/integration/Provider.test.ts | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 222d71d3c..1bd304828 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -11,11 +11,6 @@ import { DDO } from '../ddo/DDO' const apiPath = '/api/v1/services' -export interface urlDetails { - valid: boolean - contentLength?: string - contentType?: string -} /** * Provides an interface for provider service. * Provider service is the technical component executed @@ -82,7 +77,7 @@ export class Provider extends Instantiable { * @param {String} url * @return {Promise} urlDetails */ - public async checkURL(url: string): Promise { + public async checkURL(url: string): Promise { const args = { url } try { const response = await this.ocean.utils.fetch.post( @@ -90,11 +85,16 @@ export class Provider extends Instantiable { decodeURI(JSON.stringify(args)) ) - const result: urlDetails = await response.json() - return result + const { valid, contentLength, contentType } = await response.json() + if (valid) + return { + contentLength, + contentType: contentType || '', // need to do that cause lib-js File interface requires contentType + url + } + else return null } catch (e) { - const result: urlDetails = { valid: false } - return result + return null } } diff --git a/test/integration/Provider.test.ts b/test/integration/Provider.test.ts index eb07c5a62..ddfc0d9a6 100644 --- a/test/integration/Provider.test.ts +++ b/test/integration/Provider.test.ts @@ -19,13 +19,13 @@ describe('Provider tests', () => { it('Check a valid URL', async () => { const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/info.0.json' const response = await ocean.provider.checkURL(url) - assert(response.valid === true) + assert(response != null) assert(response.contentLength === '1161') assert(response.contentType === 'application/json') }) it('Check a invalid URL', async () => { const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/nosuchfile' const response = await ocean.provider.checkURL(url) - assert(response.valid === false) + assert(response === null) }) }) From 2a1af0df2d272adf1a1effc609a79a770a38ba8e Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 13 Jan 2021 21:37:52 -0800 Subject: [PATCH 5/5] use checkUrl instead of checkURL --- src/provider/Provider.ts | 2 +- test/integration/Provider.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/provider/Provider.ts b/src/provider/Provider.ts index 1bd304828..e8a1a0906 100644 --- a/src/provider/Provider.ts +++ b/src/provider/Provider.ts @@ -77,7 +77,7 @@ export class Provider extends Instantiable { * @param {String} url * @return {Promise} urlDetails */ - public async checkURL(url: string): Promise { + public async checkUrl(url: string): Promise { const args = { url } try { const response = await this.ocean.utils.fetch.post( diff --git a/test/integration/Provider.test.ts b/test/integration/Provider.test.ts index ddfc0d9a6..f9d6b2962 100644 --- a/test/integration/Provider.test.ts +++ b/test/integration/Provider.test.ts @@ -18,14 +18,14 @@ describe('Provider tests', () => { }) it('Check a valid URL', async () => { const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/info.0.json' - const response = await ocean.provider.checkURL(url) + const response = await ocean.provider.checkUrl(url) assert(response != null) assert(response.contentLength === '1161') assert(response.contentType === 'application/json') }) it('Check a invalid URL', async () => { const url = 'https://s3.amazonaws.com/testfiles.oceanprotocol.com/nosuchfile' - const response = await ocean.provider.checkURL(url) + const response = await ocean.provider.checkUrl(url) assert(response === null) }) })