1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

more customProvider code

This commit is contained in:
alexcos20 2020-09-19 00:14:02 -07:00
parent 3e79a3a37f
commit 11b58cb8c0
3 changed files with 39 additions and 20 deletions

View File

@ -16,6 +16,7 @@ import { Instantiable, InstantiableConfig } from '../Instantiable.abstract'
import { WebServiceConnector } from './utils/WebServiceConnector' import { WebServiceConnector } from './utils/WebServiceConnector'
import { DataTokens } from '../lib' import { DataTokens } from '../lib'
import BigNumber from 'bignumber.js' import BigNumber from 'bignumber.js'
import { Provider } from '../provider/Provider'
export enum CreateProgressStep { export enum CreateProgressStep {
CreatingDataToken, CreatingDataToken,
@ -56,6 +57,7 @@ export class Assets extends Instantiable {
* @param {String} cap Maximum cap (Number) - will be converted to wei * @param {String} cap Maximum cap (Number) - will be converted to wei
* @param {String} name Token name * @param {String} name Token name
* @param {String} symbol Token symbol * @param {String} symbol Token symbol
* @param {String} customProviderURL
* @return {Promise<DDO>} * @return {Promise<DDO>}
*/ */
public create( public create(
@ -65,7 +67,8 @@ export class Assets extends Instantiable {
dtAddress?: string, dtAddress?: string,
cap?: string, cap?: string,
name?: string, name?: string,
symbol?: string symbol?: string,
customProviderURL?: string
): SubscribablePromise<CreateProgressStep, DDO> { ): SubscribablePromise<CreateProgressStep, DDO> {
this.logger.log('Creating asset') this.logger.log('Creating asset')
return new SubscribablePromise(async (observer) => { return new SubscribablePromise(async (observer) => {
@ -93,7 +96,12 @@ export class Assets extends Instantiable {
this.logger.log('Encrypting files') this.logger.log('Encrypting files')
observer.next(CreateProgressStep.EncryptingFiles) 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(), did.getId(),
metadata.main.files, metadata.main.files,
publisher publisher
@ -386,9 +394,7 @@ export class Assets extends Instantiable {
return { return {
type: 'access', type: 'access',
index: 2, index: 2,
serviceEndpoint: customProvider serviceEndpoint: customProvider || this.ocean.provider.url,
? customProvider + this.ocean.provider.getConsumeEndpointShort()
: this.ocean.provider.getConsumeEndpoint(),
attributes: { attributes: {
main: { main: {
creator: creator.getId(), creator: creator.getId(),
@ -416,14 +422,12 @@ export class Assets extends Instantiable {
did: string, did: string,
serviceType: string, serviceType: string,
consumerAddress: string, consumerAddress: string,
serviceIndex = -1 serviceIndex = -1,
serviceEndpoint: string
): Promise<any> { ): Promise<any> {
const res = await this.ocean.provider.initialize( const provider = new Provider(this.instanceConfig)
did, provider.setBaseUrl(serviceEndpoint)
serviceIndex, const res = await provider.initialize(did, serviceIndex, serviceType, consumerAddress)
serviceType,
consumerAddress
)
if (res === null) return null if (res === null) return null
const providerData = JSON.parse(res) const providerData = JSON.parse(res)
return providerData return providerData
@ -445,11 +449,12 @@ export class Assets extends Instantiable {
serviceIndex = -1, serviceIndex = -1,
mpAddress?: string mpAddress?: string
): Promise<string> { ): Promise<string> {
let service
if (serviceIndex === -1) { if (serviceIndex === -1) {
const service = await this.getServiceByType(did, serviceType) service = await this.getServiceByType(did, serviceType)
serviceIndex = service.index serviceIndex = service.index
} else { } else {
const service = await this.getServiceByIndex(did, serviceIndex) service = await this.getServiceByIndex(did, serviceIndex)
serviceType = service.type serviceType = service.type
} }
const { datatokens } = this.ocean const { datatokens } = this.ocean
@ -458,10 +463,11 @@ export class Assets extends Instantiable {
did, did,
serviceType, serviceType,
consumerAddress, consumerAddress,
serviceIndex serviceIndex,
service.serviceEndpoint
) )
if (!providerData) return null if (!providerData) return null
const service = await this.getServiceByIndex(did, serviceIndex) service = await this.getServiceByIndex(did, serviceIndex)
const previousOrder = await datatokens.getPreviousValidOrders( const previousOrder = await datatokens.getPreviousValidOrders(
providerData.dataToken, providerData.dataToken,
providerData.numTokens, providerData.numTokens,
@ -526,8 +532,9 @@ export class Assets extends Instantiable {
destination = destination destination = destination
? `${destination}/datafile.${ddo.shortId()}.${service.index}/` ? `${destination}/datafile.${ddo.shortId()}.${service.index}/`
: undefined : undefined
const provider = new Provider(this.instanceConfig)
await this.ocean.provider.download( provider.setBaseUrl(serviceEndpoint)
await provider.download(
did, did,
txId, txId,
tokenAddress, tokenAddress,

View File

@ -6,6 +6,7 @@ import { SubscribablePromise } from '../utils'
import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract'
import { Output } from './interfaces/ComputeOutput' import { Output } from './interfaces/ComputeOutput'
import { ComputeJob } from './interfaces/ComputeJob' import { ComputeJob } from './interfaces/ComputeJob'
import { Provider } from '../provider/Provider'
export enum OrderProgressStep { export enum OrderProgressStep {
TransferDataToken TransferDataToken
@ -87,7 +88,12 @@ export class Compute extends Instantiable {
algorithmDataToken?: string algorithmDataToken?: string
): Promise<ComputeJob> { ): Promise<ComputeJob> {
output = this.checkOutput(consumerAccount, output) output = this.checkOutput(consumerAccount, output)
const ddo = await this.ocean.assets.resolve(did)
const service = ddo.findServiceByType('access')
const { serviceEndpoint } = service
if (did && txId) { if (did && txId) {
const provider = new Provider(this.instanceConfig)
provider.setBaseUrl(serviceEndpoint)
const computeJobsList = await this.ocean.provider.compute( const computeJobsList = await this.ocean.provider.compute(
'post', 'post',
did, did,

View File

@ -18,16 +18,22 @@ const apiPath = '/api/v1/services'
*/ */
export class Provider extends Instantiable { export class Provider extends Instantiable {
public nonce: string public nonce: string
private get url() { private baseUrl: string
return this.config.providerUri public get url() {
return this.baseUrl
} }
constructor(config: InstantiableConfig) { constructor(config: InstantiableConfig) {
super() super()
this.setInstanceConfig(config) this.setInstanceConfig(config)
this.baseUrl = this.config.providerUri
this.nonce = '0' this.nonce = '0'
} }
public setBaseUrl(url: string): void {
this.baseUrl = url
}
public async createSignature(account: Account, agreementId: string): Promise<string> { public async createSignature(account: Account, agreementId: string): Promise<string> {
const signature = await this.ocean.utils.signature.signText( const signature = await this.ocean.utils.signature.signText(
noZeroX(agreementId), noZeroX(agreementId),