diff --git a/README.md b/README.md index aeccc90..d0b4722 100644 --- a/README.md +++ b/README.md @@ -36,21 +36,20 @@ Start by adding the package to your dependencies: npm i @oceanprotocol/squid ``` -The package exposes `OceanAgent` and `Ocean` which you can import in your code like so: +The package exposes `Ocean` and `Logger` which you can import in your code like this: ```js // ES6 -import { OceanAgent, Ocean } from '@oceanprotocol/squid' +import { Ocean, Logger } from '@oceanprotocol/squid' // ES2015 -const { OceanAgent, Ocean } = require('@oceanprotocol/squid') +const { Ocean, Logger } = require('@oceanprotocol/squid') ``` You can then connect to a running [Keeper](https://github.com/oceanprotocol/keeper-contracts) & [Provider](https://github.com/oceanprotocol/provider) instance, e.g.: ```js -const ocean = await new Ocean({uri: 'http://localhost:8545', network: 'development'}) -const oceanAgent = new OceanAgent('http://localhost:5000/api/v1/provider') +const ocean = await new Ocean({nodeUri: 'http://localhost:8545', network: 'development', providerUri: 'http://localhost:5000'}) ``` ## Development diff --git a/src/ocean-agent.js b/src/deprecated/ocean-agent.js similarity index 90% rename from src/ocean-agent.js rename to src/deprecated/ocean-agent.js index 19ae2ac..ee8318a 100644 --- a/src/ocean-agent.js +++ b/src/deprecated/ocean-agent.js @@ -1,9 +1,11 @@ /* global fetch */ -import Logger from './utils/logger' +import Logger from '../utils/logger' export default class OceanAgent { constructor(connectionUrl) { this.assetsUrl = connectionUrl + '/assets' + + Logger.warn('OceanAgent is deprecated use the Ocean object from squid instead') } getAssetsMetadata() { diff --git a/src/ocean-keeper.js b/src/deprecated/ocean-keeper.js similarity index 98% rename from src/ocean-keeper.js rename to src/deprecated/ocean-keeper.js index 37cb243..4a7639b 100644 --- a/src/ocean-keeper.js +++ b/src/deprecated/ocean-keeper.js @@ -1,6 +1,6 @@ import Web3 from 'web3' -import ContractLoader from './keeper/contractLoader' -import Logger from './utils/logger' +import ContractLoader from '../keeper/contractLoader' +import Logger from '../utils/logger' const DEFAULT_GAS = 300000 diff --git a/src/metadata.js b/src/metadata.js new file mode 100644 index 0000000..cf3506c --- /dev/null +++ b/src/metadata.js @@ -0,0 +1,37 @@ +/* global fetch */ +import Logger from './utils/logger' + +export default class MetaData { + constructor(providerUri) { + this.assetsUrl = providerUri + '/assets' + } + + getAssetsMetadata() { + return fetch(this.assetsUrl + '/metadata', { method: 'GET' }) + .then(res => res.json()) + .then(data => JSON.parse(data)) + } + + publishDataAsset(asset) { + return fetch(this.assetsUrl + '/metadata', + { + method: 'POST', + body: JSON.stringify(asset), + headers: { 'Content-type': 'application/json' } + }) + .then(response => { + Logger.log('Success:', response) + if (response.ok) { + Logger.log('Success:', response) + return true + } + Logger.log('Failed: ', response.status, response.statusText) + return false + // throw new Error(response.statusText ? response.statusText : `publish asset failed with status ${response.status}`) + }) + .catch(error => { + Logger.log(`Publish asset to ocean database could not be completed: ${error.message()}`) + return false + }) + } +} diff --git a/src/ocean.js b/src/ocean.js index 91cb700..13390af 100644 --- a/src/ocean.js +++ b/src/ocean.js @@ -4,17 +4,20 @@ import OceanAuth from './keeper/auth' import OceanToken from './keeper/token' import Logger from './utils/logger' import Web3Helper from './utils/Web3Helper' +import MetaData from './metadata' const DEFAULT_GAS = 300000 export default class Ocean { constructor(config) { - const web3Provider = config.web3Provider || new Web3.providers.HttpProvider(config.uri) + const web3Provider = config.web3Provider || new Web3.providers.HttpProvider(config.nodeUri) this._web3 = new Web3(web3Provider) this._defaultGas = config.gas || DEFAULT_GAS this._network = config.network || 'development' + this._providerUri = config.providerUri || null this.helper = new Web3Helper(this._web3) + this.metadata = new MetaData(this._providerUri) return (async () => { this.market = await new OceanMarket(this._web3, this._network) diff --git a/src/squid.js b/src/squid.js index 9ae7cc2..56160f6 100644 --- a/src/squid.js +++ b/src/squid.js @@ -1,11 +1,11 @@ -import OceanAgent from './ocean-agent' -import OceanKeeper from './ocean-keeper' +import OceanAgent from './deprecated/ocean-agent' +import OceanKeeper from './deprecated/ocean-keeper' import Ocean from './ocean' import Logger from './utils/logger' export { Ocean, - OceanAgent, - OceanKeeper, + OceanAgent, // deprecated + OceanKeeper, // deprecated Logger }