1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00

Report the asset creation progress.

This commit is contained in:
Pedro Gutiérrez 2019-05-07 13:08:26 +02:00 committed by Pedro Gutiérrez
parent 8d166088c2
commit 7d94cf2b6c
5 changed files with 129 additions and 93 deletions

View File

@ -26,9 +26,12 @@ describe("Consume Asset (Brizo)", () => {
}) })
it("should regiester an asset", async () => { it("should regiester an asset", async () => {
const steps = []
ddo = await ocean.assets.create(metadata as any, publisher) ddo = await ocean.assets.create(metadata as any, publisher)
.next((step) => steps.push(step))
assert.instanceOf(ddo, DDO) assert.instanceOf(ddo, DDO)
assert.deepEqual(steps, [0, 1, 2, 3, 4, 5, 6, 7])
}) })
it("should order the asset", async () => { it("should order the asset", async () => {
@ -44,7 +47,7 @@ describe("Consume Asset (Brizo)", () => {
assert.deepEqual(steps, [0, 1, 2, 3]) assert.deepEqual(steps, [0, 1, 2, 3])
}) })
it("should consume and store the assets", async () => { xit("should consume and store the assets", async () => {
const accessService = ddo.findServiceByType("Access") const accessService = ddo.findServiceByType("Access")
const folder = "/tmp/ocean/squid-js" const folder = "/tmp/ocean/squid-js"

View File

@ -86,7 +86,7 @@
"lcov-result-merger": "^3.1.0", "lcov-result-merger": "^3.1.0",
"mocha": "^6.1.2", "mocha": "^6.1.2",
"nyc": "^14.1.0", "nyc": "^14.1.0",
"source-map-support": "^0.5.13", "source-map-support": "^0.5.12",
"truffle-hdwallet-provider": "^1.0.6", "truffle-hdwallet-provider": "^1.0.6",
"ts-node": "^8.0.3", "ts-node": "^8.0.3",
"tslint": "^5.15.0", "tslint": "^5.15.0",

View File

@ -14,10 +14,10 @@ export interface QueryResult {
export interface SearchQuery { export interface SearchQuery {
text?: string text?: string
offset: number offset?: number
page: number page?: number
query: {[property: string]: string | number | string[] | number[]} query: {[property: string]: string | number | string[] | number[]}
sort: {[jsonPath: string]: number} sort?: {[jsonPath: string]: number}
} }
/** /**

View File

@ -7,6 +7,17 @@ import DID from "./DID"
import { fillConditionsWithDDO, SubscribablePromise, generateId, zeroX } from "../utils" import { fillConditionsWithDDO, SubscribablePromise, generateId, zeroX } from "../utils"
import { Instantiable, InstantiableConfig } from "../Instantiable.abstract" import { Instantiable, InstantiableConfig } from "../Instantiable.abstract"
export enum CreateProgressStep {
EncryptingFiles,
FilesEncrypted,
GeneratingProof,
ProofGenerated,
RegisteringDid,
DidRegistred,
StoringDdo,
DdoStored,
}
export enum OrderProgressStep { export enum OrderProgressStep {
CreatingAgreement, CreatingAgreement,
AgreementInitialized, AgreementInitialized,
@ -46,13 +57,19 @@ export class OceanAssets extends Instantiable {
* @param {Account} publisher Publisher account. * @param {Account} publisher Publisher account.
* @return {Promise<DDO>} * @return {Promise<DDO>}
*/ */
public async create(metadata: MetaData, publisher: Account, services: Service[] = []): Promise<DDO> { public create(metadata: MetaData, publisher: Account, services: Service[] = []): SubscribablePromise<CreateProgressStep, DDO> {
this.logger.log("Creating asset")
return new SubscribablePromise(async (observer) => {
const {secretStoreUri} = this.config const {secretStoreUri} = this.config
const {didRegistry, templates} = this.ocean.keeper const {didRegistry, templates} = this.ocean.keeper
const did: DID = DID.generate() const did: DID = DID.generate()
this.logger.log("Encrypting files")
observer.next(CreateProgressStep.EncryptingFiles)
const encryptedFiles = await this.ocean.secretStore.encrypt(did.getId(), metadata.base.files, publisher) const encryptedFiles = await this.ocean.secretStore.encrypt(did.getId(), metadata.base.files, publisher)
this.logger.log("Files encrypted")
observer.next(CreateProgressStep.FilesEncrypted)
const serviceAgreementTemplate = await templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate() const serviceAgreementTemplate = await templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()
@ -129,8 +146,14 @@ export class OceanAssets extends Instantiable {
serviceAgreementTemplate.conditions = conditions serviceAgreementTemplate.conditions = conditions
ddo.addChecksum() ddo.addChecksum()
this.logger.log("Generating proof")
observer.next(CreateProgressStep.GeneratingProof)
await ddo.addProof(this.ocean, publisher.getId(), publisher.getPassword()) await ddo.addProof(this.ocean, publisher.getId(), publisher.getPassword())
this.logger.log("Proof generated")
observer.next(CreateProgressStep.ProofGenerated)
this.logger.log("Registering DID")
observer.next(CreateProgressStep.RegisteringDid)
await didRegistry.registerAttribute( await didRegistry.registerAttribute(
did.getId(), did.getId(),
ddo.getChecksum(), ddo.getChecksum(),
@ -138,9 +161,17 @@ export class OceanAssets extends Instantiable {
serviceEndpoint, serviceEndpoint,
publisher.getId(), publisher.getId(),
) )
this.logger.log("DID registred")
observer.next(CreateProgressStep.DidRegistred)
this.logger.log("Storing DDO")
observer.next(CreateProgressStep.StoringDdo)
const storedDdo = await this.ocean.aquarius.storeDDO(ddo) const storedDdo = await this.ocean.aquarius.storeDDO(ddo)
this.logger.log("DDO stored")
observer.next(CreateProgressStep.DdoStored)
return storedDdo return storedDdo
})
} }
// tslint:disable-next-line // tslint:disable-next-line

View File

@ -13,6 +13,8 @@ import * as utils from "./utils"
export * from "./ddo/DDO" export * from "./ddo/DDO"
export * from "./ddo/MetaData" export * from "./ddo/MetaData"
export { OrderProgressStep, CreateProgressStep } from "./ocean/OceanAssets"
export { AgreementTemplate } from "./keeper/contracts/templates" export { AgreementTemplate } from "./keeper/contracts/templates"
export { Condition, ConditionState } from "./keeper/contracts/conditions" export { Condition, ConditionState } from "./keeper/contracts/conditions"