mirror of
https://github.com/oceanprotocol-archive/squid-js.git
synced 2024-02-02 15:31:51 +01:00
more DDO structure updates
This commit is contained in:
parent
b15022a4c1
commit
e253e4c0bb
@ -77,9 +77,11 @@ describe('Asset Owners', () => {
|
|||||||
)
|
)
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
|
const accessService = ddo.findServiceByType('access')
|
||||||
|
|
||||||
await ocean.assets.order(
|
await ocean.assets.order(
|
||||||
ddo.id,
|
ddo.id,
|
||||||
ddo.findServiceByType('access').serviceDefinitionId,
|
accessService.index,
|
||||||
account2
|
account2
|
||||||
)
|
)
|
||||||
// Access granted
|
// Access granted
|
||||||
|
@ -68,7 +68,7 @@ describe('Consume Asset', () => {
|
|||||||
|
|
||||||
serviceAgreementSignatureResult = await ocean.agreements.prepare(
|
serviceAgreementSignatureResult = await ocean.agreements.prepare(
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer
|
consumer
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ describe('Consume Asset', () => {
|
|||||||
const success = await ocean.agreements.create(
|
const success = await ocean.agreements.create(
|
||||||
ddo.id,
|
ddo.id,
|
||||||
serviceAgreementSignatureResult.agreementId,
|
serviceAgreementSignatureResult.agreementId,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
serviceAgreementSignatureResult.signature,
|
serviceAgreementSignatureResult.signature,
|
||||||
consumer,
|
consumer,
|
||||||
publisher
|
publisher
|
||||||
@ -115,7 +115,7 @@ describe('Consume Asset', () => {
|
|||||||
it('should lock the payment by the consumer', async () => {
|
it('should lock the payment by the consumer', async () => {
|
||||||
const paid = await ocean.agreements.conditions.lockReward(
|
const paid = await ocean.agreements.conditions.lockReward(
|
||||||
serviceAgreementSignatureResult.agreementId,
|
serviceAgreementSignatureResult.agreementId,
|
||||||
ddo.findServiceByType('metadata').metadata.main.price,
|
ddo.findServiceByType('metadata').attributes.main.price,
|
||||||
consumer
|
consumer
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ describe('Consume Asset', () => {
|
|||||||
const path = await ocean.assets.consume(
|
const path = await ocean.assets.consume(
|
||||||
serviceAgreementSignatureResult.agreementId,
|
serviceAgreementSignatureResult.agreementId,
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer,
|
consumer,
|
||||||
folder
|
folder
|
||||||
)
|
)
|
||||||
@ -189,7 +189,7 @@ describe('Consume Asset', () => {
|
|||||||
const path = await ocean.assets.consume(
|
const path = await ocean.assets.consume(
|
||||||
serviceAgreementSignatureResult.agreementId,
|
serviceAgreementSignatureResult.agreementId,
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer,
|
consumer,
|
||||||
folder,
|
folder,
|
||||||
1
|
1
|
||||||
|
@ -61,7 +61,7 @@ describe('Consume Asset (Brizo)', () => {
|
|||||||
|
|
||||||
const steps = []
|
const steps = []
|
||||||
agreementId = await ocean.assets
|
agreementId = await ocean.assets
|
||||||
.order(ddo.id, accessService.serviceDefinitionId, consumer)
|
.order(ddo.id, accessService.index, consumer)
|
||||||
.next(step => steps.push(step))
|
.next(step => steps.push(step))
|
||||||
|
|
||||||
assert.isDefined(agreementId)
|
assert.isDefined(agreementId)
|
||||||
@ -75,7 +75,7 @@ describe('Consume Asset (Brizo)', () => {
|
|||||||
const path = await ocean.assets.consume(
|
const path = await ocean.assets.consume(
|
||||||
agreementId,
|
agreementId,
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer,
|
consumer,
|
||||||
folder
|
folder
|
||||||
)
|
)
|
||||||
|
@ -59,7 +59,7 @@ xdescribe('Consume Asset (Large size)', () => {
|
|||||||
|
|
||||||
agreementId = await ocean.assets.order(
|
agreementId = await ocean.assets.order(
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer
|
consumer
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ xdescribe('Consume Asset (Large size)', () => {
|
|||||||
const path = await ocean.assets.consume(
|
const path = await ocean.assets.consume(
|
||||||
agreementId,
|
agreementId,
|
||||||
ddo.id,
|
ddo.id,
|
||||||
accessService.serviceDefinitionId,
|
accessService.index,
|
||||||
consumer,
|
consumer,
|
||||||
folder
|
folder
|
||||||
)
|
)
|
||||||
|
@ -46,7 +46,6 @@ describe('Signature', () => {
|
|||||||
const did = `did:op:${'c'.repeat(64)}`
|
const did = `did:op:${'c'.repeat(64)}`
|
||||||
const templateId = `0x${'f'.repeat(40)}`
|
const templateId = `0x${'f'.repeat(40)}`
|
||||||
const agreementId = `0x${'e'.repeat(64)}`
|
const agreementId = `0x${'e'.repeat(64)}`
|
||||||
const serviceDefinitionId = '0'
|
|
||||||
|
|
||||||
const serviceAgreementTemplate = await templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()
|
const serviceAgreementTemplate = await templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()
|
||||||
|
|
||||||
@ -55,15 +54,16 @@ describe('Signature', () => {
|
|||||||
service: [
|
service: [
|
||||||
{
|
{
|
||||||
type: 'access',
|
type: 'access',
|
||||||
|
index: 0,
|
||||||
purchaseEndpoint: undefined,
|
purchaseEndpoint: undefined,
|
||||||
serviceEndpoint: undefined,
|
serviceEndpoint: undefined,
|
||||||
serviceDefinitionId,
|
|
||||||
templateId,
|
templateId,
|
||||||
serviceAgreementTemplate
|
serviceAgreementTemplate
|
||||||
} as any,
|
} as any,
|
||||||
{
|
{
|
||||||
type: 'metadata',
|
type: 'metadata',
|
||||||
metadata: {
|
index: 1,
|
||||||
|
attributes: {
|
||||||
main: {
|
main: {
|
||||||
price: 10
|
price: 10
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ describe('Signature', () => {
|
|||||||
|
|
||||||
const signature = await ocean.utils.agreements.signServiceAgreement(
|
const signature = await ocean.utils.agreements.signServiceAgreement(
|
||||||
ddo,
|
ddo,
|
||||||
serviceDefinitionId,
|
0,
|
||||||
agreementId,
|
agreementId,
|
||||||
[
|
[
|
||||||
`0x${'1'.repeat(64)}`,
|
`0x${'1'.repeat(64)}`,
|
||||||
|
@ -12,11 +12,13 @@ const metadata: Partial<MetaData> = {
|
|||||||
files: [
|
files: [
|
||||||
{
|
{
|
||||||
index: 0,
|
index: 0,
|
||||||
|
contentType: 'application/json',
|
||||||
url:
|
url:
|
||||||
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/package.json'
|
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/package.json'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
index: 1,
|
index: 1,
|
||||||
|
contentType: 'text/plain',
|
||||||
url:
|
url:
|
||||||
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/README.md'
|
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/README.md'
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ export class Brizo extends Instantiable {
|
|||||||
|
|
||||||
public getComputeEndpoint(
|
public getComputeEndpoint(
|
||||||
pubKey: string,
|
pubKey: string,
|
||||||
serviceId: string,
|
serviceIndex: number,
|
||||||
_notUsed: string,
|
_notUsed: string,
|
||||||
container: string
|
container: string
|
||||||
) {
|
) {
|
||||||
@ -47,14 +47,14 @@ export class Brizo extends Instantiable {
|
|||||||
public async initializeServiceAgreement(
|
public async initializeServiceAgreement(
|
||||||
did: string,
|
did: string,
|
||||||
serviceAgreementId: string,
|
serviceAgreementId: string,
|
||||||
serviceDefinitionId: string,
|
serviceIndex: number,
|
||||||
signature: string,
|
signature: string,
|
||||||
consumerAddress: string
|
consumerAddress: string
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
const args = {
|
const args = {
|
||||||
did,
|
did,
|
||||||
serviceAgreementId,
|
serviceAgreementId,
|
||||||
serviceDefinitionId,
|
serviceIndex,
|
||||||
signature,
|
signature,
|
||||||
consumerAddress
|
consumerAddress
|
||||||
}
|
}
|
||||||
|
@ -63,19 +63,19 @@ export class DDO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a service of a DDO by ID.
|
* Finds a service of a DDO by index.
|
||||||
* @param {string} serviceDefinitionId Service ID.
|
* @param {number} Service index.
|
||||||
* @return {Service} Service.
|
* @return {Service} Service.
|
||||||
*/
|
*/
|
||||||
public findServiceById<T extends ServiceType>(
|
public findServiceById<T extends ServiceType>(
|
||||||
serviceDefinitionId: string
|
index: number
|
||||||
): Service<T> {
|
): Service<T> {
|
||||||
if (!serviceDefinitionId) {
|
if (!index) {
|
||||||
throw new Error('serviceDefinitionId not set')
|
throw new Error('index is not set')
|
||||||
}
|
}
|
||||||
|
|
||||||
const service = this.service.find(
|
const service = this.service.find(
|
||||||
s => s.serviceDefinitionId === serviceDefinitionId
|
s => s.index === index
|
||||||
)
|
)
|
||||||
|
|
||||||
return service as Service<T>
|
return service as Service<T>
|
||||||
@ -101,8 +101,8 @@ export class DDO {
|
|||||||
* @return {string[]} DDO checksum.
|
* @return {string[]} DDO checksum.
|
||||||
*/
|
*/
|
||||||
public getChecksum(): string {
|
public getChecksum(): string {
|
||||||
const { metadata } = this.findServiceByType('metadata')
|
const { attributes } = this.findServiceByType('metadata')
|
||||||
const { files, name, author, license } = metadata.main
|
const { files, name, author, license } = attributes.main
|
||||||
|
|
||||||
const values = [
|
const values = [
|
||||||
...(files || []).map(({ checksum }) => checksum).filter(_ => !!_),
|
...(files || []).map(({ checksum }) => checksum).filter(_ => !!_),
|
||||||
@ -150,11 +150,11 @@ export class DDO {
|
|||||||
*/
|
*/
|
||||||
public addChecksum(): void {
|
public addChecksum(): void {
|
||||||
const metadataService = this.findServiceByType('metadata')
|
const metadataService = this.findServiceByType('metadata')
|
||||||
if (metadataService.metadata.main.checksum) {
|
if (metadataService.attributes.main.checksum) {
|
||||||
LoggerInstance.log('Checksum already exists')
|
LoggerInstance.log('Checksum already exists')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
metadataService.metadata.main.checksum = this.getChecksum()
|
metadataService.attributes.main.checksum = this.getChecksum()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@ export type ServiceType =
|
|||||||
|
|
||||||
export interface ServiceCommon {
|
export interface ServiceCommon {
|
||||||
type: ServiceType
|
type: ServiceType
|
||||||
serviceDefinitionId?: string
|
index: number
|
||||||
serviceEndpoint?: string
|
serviceEndpoint?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ export interface ServiceAuthorization extends ServiceCommon {
|
|||||||
|
|
||||||
export interface ServiceMetadata extends ServiceCommon {
|
export interface ServiceMetadata extends ServiceCommon {
|
||||||
type: 'metadata'
|
type: 'metadata'
|
||||||
metadata: MetaData
|
attributes: MetaData
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ServiceAccess extends ServiceCommon {
|
export interface ServiceAccess extends ServiceCommon {
|
||||||
|
@ -59,7 +59,7 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplate {
|
|||||||
) {
|
) {
|
||||||
return !!(await this.createFullAgreement(
|
return !!(await this.createFullAgreement(
|
||||||
ddo.shortId(),
|
ddo.shortId(),
|
||||||
ddo.findServiceByType('metadata').metadata.main.price,
|
ddo.findServiceByType('metadata').attributes.main.price,
|
||||||
consumer,
|
consumer,
|
||||||
from,
|
from,
|
||||||
agreementId
|
agreementId
|
||||||
@ -79,7 +79,7 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplate {
|
|||||||
} = await this.createFullAgreementData(
|
} = await this.createFullAgreementData(
|
||||||
agreementId,
|
agreementId,
|
||||||
ddo.shortId(),
|
ddo.shortId(),
|
||||||
ddo.findServiceByType('metadata').metadata.main.price,
|
ddo.findServiceByType('metadata').attributes.main.price,
|
||||||
consumer
|
consumer
|
||||||
)
|
)
|
||||||
return [
|
return [
|
||||||
|
@ -42,13 +42,13 @@ export class OceanAgreements extends Instantiable {
|
|||||||
/**
|
/**
|
||||||
* Creates a consumer signature for the specified asset service.
|
* Creates a consumer signature for the specified asset service.
|
||||||
* @param {string} did Decentralized ID.
|
* @param {string} did Decentralized ID.
|
||||||
* @param {string} serviceDefinitionId Service definition ID.
|
* @param {number} index Service index.
|
||||||
* @param {Account} consumer Consumer account.
|
* @param {Account} consumer Consumer account.
|
||||||
* @return {Promise<AgreementPrepareResult>} Agreement ID and signaturee.
|
* @return {Promise<AgreementPrepareResult>} Agreement ID and signaturee.
|
||||||
*/
|
*/
|
||||||
public async prepare(
|
public async prepare(
|
||||||
did: string,
|
did: string,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
consumer: Account
|
consumer: Account
|
||||||
): Promise<AgreementPrepareResult> {
|
): Promise<AgreementPrepareResult> {
|
||||||
const d: DID = DID.parse(did as string)
|
const d: DID = DID.parse(did as string)
|
||||||
@ -68,7 +68,7 @@ export class OceanAgreements extends Instantiable {
|
|||||||
|
|
||||||
const signature = await this.ocean.utils.agreements.signServiceAgreement(
|
const signature = await this.ocean.utils.agreements.signServiceAgreement(
|
||||||
ddo,
|
ddo,
|
||||||
serviceDefinitionId,
|
index,
|
||||||
agreementId,
|
agreementId,
|
||||||
agreementConditionsIds,
|
agreementConditionsIds,
|
||||||
consumer
|
consumer
|
||||||
@ -80,21 +80,21 @@ export class OceanAgreements extends Instantiable {
|
|||||||
/**
|
/**
|
||||||
* Submit a service agreement to the publisher to create the agreement on-chain.
|
* Submit a service agreement to the publisher to create the agreement on-chain.
|
||||||
* @param {string} did Decentralized ID.
|
* @param {string} did Decentralized ID.
|
||||||
* @param {string} serviceDefinitionId Service definition ID.
|
* @param {number} index Service index.
|
||||||
* @param {Account} consumer Consumer account.
|
* @param {Account} consumer Consumer account.
|
||||||
* @return {Promise<void>}
|
* @return {Promise<void>}
|
||||||
*/
|
*/
|
||||||
public async send(
|
public async send(
|
||||||
did: string,
|
did: string,
|
||||||
agreementId: string,
|
agreementId: string,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
signature: string,
|
signature: string,
|
||||||
consumer: Account
|
consumer: Account
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const result = await this.ocean.brizo.initializeServiceAgreement(
|
const result = await this.ocean.brizo.initializeServiceAgreement(
|
||||||
didPrefixed(did),
|
didPrefixed(did),
|
||||||
zeroX(agreementId),
|
zeroX(agreementId),
|
||||||
serviceDefinitionId,
|
index,
|
||||||
zeroX(signature),
|
zeroX(signature),
|
||||||
consumer.getId()
|
consumer.getId()
|
||||||
)
|
)
|
||||||
@ -112,7 +112,7 @@ export class OceanAgreements extends Instantiable {
|
|||||||
* in this method before submitting on-chain.
|
* in this method before submitting on-chain.
|
||||||
* @param {string} did Decentralized ID.
|
* @param {string} did Decentralized ID.
|
||||||
* @param {string} agreementId Service agreement ID.
|
* @param {string} agreementId Service agreement ID.
|
||||||
* @param {string} serviceDefinitionId Service definition ID.
|
* @param {number} index Service index.
|
||||||
* @param {string} signature Service agreement signature.
|
* @param {string} signature Service agreement signature.
|
||||||
* @param {Account} consumer Consumer account.
|
* @param {Account} consumer Consumer account.
|
||||||
* @param {Account} publisher Publisher account.
|
* @param {Account} publisher Publisher account.
|
||||||
@ -121,7 +121,7 @@ export class OceanAgreements extends Instantiable {
|
|||||||
public async create(
|
public async create(
|
||||||
did: string,
|
did: string,
|
||||||
agreementId: string,
|
agreementId: string,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
signature: string,
|
signature: string,
|
||||||
consumer: Account,
|
consumer: Account,
|
||||||
publisher: Account
|
publisher: Account
|
||||||
@ -129,7 +129,7 @@ export class OceanAgreements extends Instantiable {
|
|||||||
const d: DID = DID.parse(did)
|
const d: DID = DID.parse(did)
|
||||||
const ddo = await this.ocean.aquarius.retrieveDDO(d)
|
const ddo = await this.ocean.aquarius.retrieveDDO(d)
|
||||||
|
|
||||||
const templateName = ddo.findServiceById<'access'>(serviceDefinitionId)
|
const templateName = ddo.findServiceById<'access'>(index)
|
||||||
.serviceAgreementTemplate.contractName
|
.serviceAgreementTemplate.contractName
|
||||||
await this.ocean.keeper
|
await this.ocean.keeper
|
||||||
.getTemplateByName(templateName)
|
.getTemplateByName(templateName)
|
||||||
@ -145,9 +145,7 @@ export class OceanAgreements extends Instantiable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the status of a service agreement.
|
* Get the status of a service agreement.
|
||||||
* @param {string} did Decentralized ID.
|
|
||||||
* @param {string} agreementId Service agreement ID.
|
* @param {string} agreementId Service agreement ID.
|
||||||
* @param {string} serviceDefinitionId Service definition ID.
|
|
||||||
* @param {boolean} extended Returns a complete status with dependencies.
|
* @param {boolean} extended Returns a complete status with dependencies.
|
||||||
* @return {Promise<any>}
|
* @return {Promise<any>}
|
||||||
*/
|
*/
|
||||||
|
@ -91,7 +91,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
|
|
||||||
const serviceEndpoint = this.ocean.aquarius.getServiceEndpoint(did)
|
const serviceEndpoint = this.ocean.aquarius.getServiceEndpoint(did)
|
||||||
|
|
||||||
let serviceDefinitionIdCount = 0
|
let indexCount = 0
|
||||||
// create ddo itself
|
// create ddo itself
|
||||||
const ddo: DDO = new DDO({
|
const ddo: DDO = new DDO({
|
||||||
id: did.getDid(),
|
id: did.getDid(),
|
||||||
@ -126,7 +126,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
{
|
{
|
||||||
type: 'metadata',
|
type: 'metadata',
|
||||||
serviceEndpoint,
|
serviceEndpoint,
|
||||||
metadata: {
|
attributes: {
|
||||||
// Default values
|
// Default values
|
||||||
curation: {
|
curation: {
|
||||||
rating: 0,
|
rating: 0,
|
||||||
@ -158,10 +158,10 @@ export class OceanAssets extends Instantiable {
|
|||||||
list.findIndex(({ type: t }) => t === type) === i
|
list.findIndex(({ type: t }) => t === type) === i
|
||||||
)
|
)
|
||||||
.reverse()
|
.reverse()
|
||||||
// Adding ID
|
// Adding index
|
||||||
.map(_ => ({
|
.map(_ => ({
|
||||||
..._,
|
..._,
|
||||||
serviceDefinitionId: String(serviceDefinitionIdCount++)
|
index: indexCount++
|
||||||
})) as Service[]
|
})) as Service[]
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
public async consume(
|
public async consume(
|
||||||
agreementId: string,
|
agreementId: string,
|
||||||
did: string,
|
did: string,
|
||||||
serviceDefinitionId: string,
|
serviceIndex: number,
|
||||||
consumerAccount: Account,
|
consumerAccount: Account,
|
||||||
resultPath: string,
|
resultPath: string,
|
||||||
index?: number,
|
index?: number,
|
||||||
@ -216,7 +216,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
public async consume(
|
public async consume(
|
||||||
agreementId: string,
|
agreementId: string,
|
||||||
did: string,
|
did: string,
|
||||||
serviceDefinitionId: string,
|
serviceIndex: number,
|
||||||
consumerAccount: Account,
|
consumerAccount: Account,
|
||||||
resultPath?: undefined | null,
|
resultPath?: undefined | null,
|
||||||
index?: number,
|
index?: number,
|
||||||
@ -226,18 +226,18 @@ export class OceanAssets extends Instantiable {
|
|||||||
public async consume(
|
public async consume(
|
||||||
agreementId: string,
|
agreementId: string,
|
||||||
did: string,
|
did: string,
|
||||||
serviceDefinitionId: string,
|
serviceIndex: number,
|
||||||
consumerAccount: Account,
|
consumerAccount: Account,
|
||||||
resultPath?: string,
|
resultPath?: string,
|
||||||
index: number = -1,
|
index: number = -1,
|
||||||
useSecretStore?: boolean
|
useSecretStore?: boolean
|
||||||
): Promise<string | true> {
|
): Promise<string | true> {
|
||||||
const ddo = await this.resolve(did)
|
const ddo = await this.resolve(did)
|
||||||
const { metadata } = ddo.findServiceByType('metadata')
|
const { attributes } = ddo.findServiceByType('metadata')
|
||||||
|
|
||||||
const accessService = ddo.findServiceById(serviceDefinitionId)
|
const accessService = ddo.findServiceById(serviceIndex)
|
||||||
|
|
||||||
const { files } = metadata.main
|
const { files } = attributes.main
|
||||||
|
|
||||||
const { serviceEndpoint } = accessService
|
const { serviceEndpoint } = accessService
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
this.logger.log('Consuming files')
|
this.logger.log('Consuming files')
|
||||||
|
|
||||||
resultPath = resultPath
|
resultPath = resultPath
|
||||||
? `${resultPath}/datafile.${ddo.shortId()}.${serviceDefinitionId}/`
|
? `${resultPath}/datafile.${ddo.shortId()}.${serviceIndex}/`
|
||||||
: undefined
|
: undefined
|
||||||
|
|
||||||
if (!useSecretStore) {
|
if (!useSecretStore) {
|
||||||
@ -265,7 +265,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
} else {
|
} else {
|
||||||
const files = await this.ocean.secretStore.decrypt(
|
const files = await this.ocean.secretStore.decrypt(
|
||||||
did,
|
did,
|
||||||
ddo.findServiceByType('metadata').metadata.main.encryptedFiles,
|
ddo.findServiceByType('metadata').attributes.main.encryptedFiles,
|
||||||
consumerAccount,
|
consumerAccount,
|
||||||
ddo.findServiceByType('authorization').serviceEndpoint
|
ddo.findServiceByType('authorization').serviceEndpoint
|
||||||
)
|
)
|
||||||
@ -288,13 +288,13 @@ export class OceanAssets extends Instantiable {
|
|||||||
* Start the purchase/order of an asset's service. Starts by signing the service agreement
|
* Start the purchase/order of an asset's service. Starts by signing the service agreement
|
||||||
* then sends the request to the publisher via the service endpoint (Brizo http service).
|
* then sends the request to the publisher via the service endpoint (Brizo http service).
|
||||||
* @param {string} did Decentralized ID.
|
* @param {string} did Decentralized ID.
|
||||||
* @param {string} serviceDefinitionId Service definition ID.
|
* @param {number} index Service index.
|
||||||
* @param {Account} consumer Consumer account.
|
* @param {Account} consumer Consumer account.
|
||||||
* @return {Promise<string>} Returns Agreement ID
|
* @return {Promise<string>} Returns Agreement ID
|
||||||
*/
|
*/
|
||||||
public order(
|
public order(
|
||||||
did: string,
|
did: string,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
consumer: Account
|
consumer: Account
|
||||||
): SubscribablePromise<OrderProgressStep, string> {
|
): SubscribablePromise<OrderProgressStep, string> {
|
||||||
return new SubscribablePromise(async observer => {
|
return new SubscribablePromise(async observer => {
|
||||||
@ -316,7 +316,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
this.logger.log('Agreement initialized')
|
this.logger.log('Agreement initialized')
|
||||||
observer.next(OrderProgressStep.AgreementInitialized)
|
observer.next(OrderProgressStep.AgreementInitialized)
|
||||||
|
|
||||||
const { metadata } = ddo.findServiceByType('metadata')
|
const { attributes } = ddo.findServiceByType('metadata')
|
||||||
|
|
||||||
this.logger.log('Locking payment')
|
this.logger.log('Locking payment')
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
observer.next(OrderProgressStep.LockingPayment)
|
observer.next(OrderProgressStep.LockingPayment)
|
||||||
const paid = await oceanAgreements.conditions.lockReward(
|
const paid = await oceanAgreements.conditions.lockReward(
|
||||||
agreementId,
|
agreementId,
|
||||||
metadata.main.price,
|
attributes.main.price,
|
||||||
consumer
|
consumer
|
||||||
)
|
)
|
||||||
observer.next(OrderProgressStep.LockedPayment)
|
observer.next(OrderProgressStep.LockedPayment)
|
||||||
@ -352,7 +352,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
await oceanAgreements.create(
|
await oceanAgreements.create(
|
||||||
did,
|
did,
|
||||||
agreementId,
|
agreementId,
|
||||||
serviceDefinitionId,
|
index,
|
||||||
undefined,
|
undefined,
|
||||||
consumer,
|
consumer,
|
||||||
consumer
|
consumer
|
||||||
|
@ -13,12 +13,12 @@ export class ServiceAgreement extends Instantiable {
|
|||||||
|
|
||||||
public async signServiceAgreement(
|
public async signServiceAgreement(
|
||||||
ddo: DDO,
|
ddo: DDO,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
serviceAgreementId: string,
|
serviceAgreementId: string,
|
||||||
agreementConditionsIds: string[],
|
agreementConditionsIds: string[],
|
||||||
consumer: Account
|
consumer: Account
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const service = ddo.findServiceById<'access'>(serviceDefinitionId)
|
const service = ddo.findServiceById<'access'>(index)
|
||||||
const timelockValues: number[] = this.getTimeValuesFromService(
|
const timelockValues: number[] = this.getTimeValuesFromService(
|
||||||
service,
|
service,
|
||||||
'timelock'
|
'timelock'
|
||||||
|
@ -13,7 +13,7 @@ function fillParameterWithDDO(
|
|||||||
case 'amount':
|
case 'amount':
|
||||||
case 'price':
|
case 'price':
|
||||||
return String(
|
return String(
|
||||||
ddo.findServiceByType('metadata').metadata.main.price
|
ddo.findServiceByType('metadata').attributes.main.price
|
||||||
)
|
)
|
||||||
case 'assetId':
|
case 'assetId':
|
||||||
case 'documentId':
|
case 'documentId':
|
||||||
|
@ -88,9 +88,10 @@ describe('DDO', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'metadata',
|
type: 'metadata',
|
||||||
|
index: 0,
|
||||||
serviceEndpoint:
|
serviceEndpoint:
|
||||||
'http://myaquarius.org/api/v1/provider/assets/metadata/{did}',
|
'http://myaquarius.org/api/v1/provider/assets/metadata/{did}',
|
||||||
metadata: {
|
attributes: {
|
||||||
main: {
|
main: {
|
||||||
name: 'UK Weather information 2011',
|
name: 'UK Weather information 2011',
|
||||||
type: 'dataset',
|
type: 'dataset',
|
||||||
@ -104,16 +105,19 @@ describe('DDO', () => {
|
|||||||
index: 0,
|
index: 0,
|
||||||
checksum: 'efb2c764274b745f5fc37f97c6b0e761',
|
checksum: 'efb2c764274b745f5fc37f97c6b0e761',
|
||||||
contentLength: 4535431,
|
contentLength: 4535431,
|
||||||
|
contentType: 'application/json',
|
||||||
resourceId:
|
resourceId:
|
||||||
'access-log2018-02-13-15-17-29-18386C502CAEA932'
|
'access-log2018-02-13-15-17-29-18386C502CAEA932'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
index: 1,
|
index: 1,
|
||||||
checksum: '085340abffh21495345af97c6b0e761',
|
checksum: '085340abffh21495345af97c6b0e761',
|
||||||
contentLength: 12324
|
contentLength: 12324,
|
||||||
|
contentType: 'application/json'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
index: 2
|
index: 2,
|
||||||
|
contentType: ''
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
checksum: ''
|
checksum: ''
|
||||||
|
@ -4,7 +4,7 @@ export default class BrizoMock extends Brizo {
|
|||||||
public async initializeServiceAgreement(
|
public async initializeServiceAgreement(
|
||||||
did: string,
|
did: string,
|
||||||
serviceAgreementId: string,
|
serviceAgreementId: string,
|
||||||
serviceDefinitionId: string,
|
index: number,
|
||||||
signature: string,
|
signature: string,
|
||||||
consumerPublicKey: string
|
consumerPublicKey: string
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
|
10
test/testdata/ddo.json
vendored
10
test/testdata/ddo.json
vendored
@ -40,7 +40,7 @@
|
|||||||
"service": [
|
"service": [
|
||||||
{
|
{
|
||||||
"type": "access",
|
"type": "access",
|
||||||
"serviceDefinitionId": "0",
|
"index": 0,
|
||||||
"serviceEndpoint": "http://mybrizo.org/api/v1/brizo/services/consume?pubKey=${pubKey}&serviceId={serviceId}&url={url}",
|
"serviceEndpoint": "http://mybrizo.org/api/v1/brizo/services/consume?pubKey=${pubKey}&serviceId={serviceId}&url={url}",
|
||||||
"purchaseEndpoint": "http://mybrizo.org/api/v1/brizo/services/access/purchase?",
|
"purchaseEndpoint": "http://mybrizo.org/api/v1/brizo/services/access/purchase?",
|
||||||
"templateId": "044852b2a670ade5407e78fb2863c51000000000000000000000000000000000",
|
"templateId": "044852b2a670ade5407e78fb2863c51000000000000000000000000000000000",
|
||||||
@ -145,16 +145,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "compute",
|
"type": "compute",
|
||||||
"serviceDefinitionId": "1",
|
"index": 1,
|
||||||
"serviceEndpoint": "http://mybrizo.org/api/v1/brizo/services/compute?pubKey=${pubKey}&serviceId={serviceId}&algo={algo}&container={container}",
|
"serviceEndpoint": "http://mybrizo.org/api/v1/brizo/services/compute?pubKey=${pubKey}&serviceId={serviceId}&algo={algo}&container={container}",
|
||||||
"templateId": "044852b2a670ade5407e78fb2863c51000000000000000000000000000000002"
|
"templateId": "044852b2a670ade5407e78fb2863c51000000000000000000000000000000002"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "metadata",
|
"type": "metadata",
|
||||||
"serviceDefinitionId": "2",
|
"index": 2,
|
||||||
"serviceEndpoint": "http://myaquarius.org/api/v1/provider/assets/metadata/{did}",
|
"serviceEndpoint": "http://myaquarius.org/api/v1/provider/assets/metadata/{did}",
|
||||||
"metadata": {
|
"attributes": {
|
||||||
"base": {
|
"main": {
|
||||||
"name": "UK Weather information 2011",
|
"name": "UK Weather information 2011",
|
||||||
"type": "dataset",
|
"type": "dataset",
|
||||||
"dateCreated": "2012-10-10T17:00:000Z",
|
"dateCreated": "2012-10-10T17:00:000Z",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user