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 { 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<DDO>}
*/
public create(
@ -65,7 +67,8 @@ export class Assets extends Instantiable {
dtAddress?: string,
cap?: string,
name?: string,
symbol?: string
symbol?: string,
customProviderURL?: string
): SubscribablePromise<CreateProgressStep, DDO> {
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<any> {
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<string> {
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,

View File

@ -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<ComputeJob> {
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,

View File

@ -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<string> {
const signature = await this.ocean.utils.signature.signText(
noZeroX(agreementId),