From ce7027590e9843dd84b4aace417d848e346c4bc8 Mon Sep 17 00:00:00 2001 From: Sebastian Gerske Date: Fri, 7 Dec 2018 15:19:16 +0100 Subject: [PATCH] new access template --- src/ddo/Event.ts | 6 +- src/ddo/{EventHandlers.ts => EventHandler.ts} | 2 +- src/keeper/Keeper.ts | 5 +- src/keeper/contracts/ServiceAgreement.ts | 2 + .../contracts/conditions/AccessConditions.ts | 2 + src/ocean/Ocean.ts | 8 +-- .../ServiceAgreements/Templates/Access.ts | 57 ++++++++++--------- 7 files changed, 45 insertions(+), 37 deletions(-) rename src/ddo/{EventHandlers.ts => EventHandler.ts} (79%) diff --git a/src/ddo/Event.ts b/src/ddo/Event.ts index 2ca59ba..2195acf 100644 --- a/src/ddo/Event.ts +++ b/src/ddo/Event.ts @@ -1,7 +1,7 @@ -import EventHandlers from "./EventHandlers" +import EventHandler from "./EventHandler" export default class Event { public name: string - public actorType: string[] - public handlers: EventHandlers + public actorType: string + public handler: EventHandler } diff --git a/src/ddo/EventHandlers.ts b/src/ddo/EventHandler.ts similarity index 79% rename from src/ddo/EventHandlers.ts rename to src/ddo/EventHandler.ts index 9f7e4b0..5819cda 100644 --- a/src/ddo/EventHandlers.ts +++ b/src/ddo/EventHandler.ts @@ -1,4 +1,4 @@ -export default class EventHandlers { +export default class EventHandler { public moduleName: string = "serviceAgreement" public functionName: string = "fulfillAgreement" public version: string = "0.1" diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index 7f62454..e96c08f 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -64,10 +64,11 @@ export default class Keeper { network = "Kovan" break case 8996: - network = "Ocean_POA_net_local" + network = "Spree" + // network = "ocean_poa_net_local" break case 8995: - network = "Ocean_POA_AWS" + network = "Nile" break default: // Logger.log(`NetworkId ${networkId} not found defaulting`) diff --git a/src/keeper/contracts/ServiceAgreement.ts b/src/keeper/contracts/ServiceAgreement.ts index ca2d4c7..c2637b4 100644 --- a/src/keeper/contracts/ServiceAgreement.ts +++ b/src/keeper/contracts/ServiceAgreement.ts @@ -25,6 +25,8 @@ export default class ServiceAgreement extends ContractBase { ]) } + // todo get service agreement consumer + public async getTemplateStatus(templateId: string) { return this.call("getTemplateStatus", [templateId]) diff --git a/src/keeper/contracts/conditions/AccessConditions.ts b/src/keeper/contracts/conditions/AccessConditions.ts index 6bd5e65..9eacfea 100644 --- a/src/keeper/contracts/conditions/AccessConditions.ts +++ b/src/keeper/contracts/conditions/AccessConditions.ts @@ -9,6 +9,8 @@ export default class AccessConditions extends ContractBase { return accessConditions } + // todo add check permissions proxy + public async grantAccess(serviceAgreementId: any, assetId: any, documentKeyId: any, publisherAddress: string) : Promise { return this.send("grantAccess", publisherAddress, [ diff --git a/src/ocean/Ocean.ts b/src/ocean/Ocean.ts index 80d1b26..0e2b1c3 100644 --- a/src/ocean/Ocean.ts +++ b/src/ocean/Ocean.ts @@ -7,7 +7,7 @@ import Condition from "../ddo/Condition" import Contract from "../ddo/Contract" import DDO from "../ddo/DDO" import Event from "../ddo/Event" -import EventHandlers from "../ddo/EventHandlers" +import EventHandler from "../ddo/EventHandler" import MetaData from "../ddo/MetaData" import PublicKey from "../ddo/PublicKey" import Service from "../ddo/Service" @@ -112,12 +112,12 @@ export default class Ocean { events: [ { name: "ExecuteAgreement", - actorType: ["consumer"], - handlers: { + actorType: "consumer", + handler: { moduleName: "payment", functionName: "lockPayment", version: "0.1", - } as EventHandlers, + } as EventHandler, } as Event, ], } as Contract, diff --git a/src/ocean/ServiceAgreements/Templates/Access.ts b/src/ocean/ServiceAgreements/Templates/Access.ts index 0f92da5..dabd675 100644 --- a/src/ocean/ServiceAgreements/Templates/Access.ts +++ b/src/ocean/ServiceAgreements/Templates/Access.ts @@ -18,8 +18,7 @@ export default class Access extends TemplateBase { { name: "assetId", type: "bytes32", - } as Parameter, - { + } as Parameter, { name: "price", type: "uint256", } as Parameter, @@ -38,12 +37,11 @@ export default class Access extends TemplateBase { dependencies: [], dependencyTimeoutFlags: [], isTerminalCondition: false, - } as Method, - { + } as Method, { name: "grantAccess", contractName: "AccessConditions", methodName: "grantAccess", - timeout: 10, + timeout: 0, parameters: [ { name: "assetId", @@ -55,15 +53,6 @@ export default class Access extends TemplateBase { } as Parameter, ], events: [ - { - name: "AccessGranted", - actorType: "consumer", - handler: { - moduleName: "asset", - functionName: "consumeService", - version: "0.1", - } as EventHandler, - } as Event, { name: "AccessGranted", actorType: "publisher", @@ -73,22 +62,38 @@ export default class Access extends TemplateBase { version: "0.1", } as EventHandler, } as Event, + { + name: "AccessGranted", + actorType: "consumer", + handler: { + moduleName: "accessControl", + functionName: "consumeAsset", + version: "0.1", + } as EventHandler, + } as Event, + { + name: "AccessTimeout", + actorType: "consumer", + handler: { + moduleName: "payment", + functionName: "refundPayment", + version: "0.1", + } as EventHandler, + } as Event, ], dependencies: ["lockPayment"], dependencyTimeoutFlags: [0], isTerminalCondition: false, - } as Method, - { + } as Method, { name: "releasePayment", contractName: "PaymentConditions", methodName: "releasePayment", - timeout: 10, + timeout: 0, parameters: [ { name: "assetId", type: "bytes32", - } as Parameter, - { + } as Parameter, { name: "price", type: "uint256", } as Parameter, @@ -96,7 +101,7 @@ export default class Access extends TemplateBase { events: [ { name: "PaymentReleased", - actorType: "publisher", + actorType: "consumer", handler: { moduleName: "serviceAgreement", functionName: "fulfillAgreement", @@ -107,18 +112,16 @@ export default class Access extends TemplateBase { dependencies: ["grantAccess"], dependencyTimeoutFlags: [0], isTerminalCondition: true, - } as Method, - { + } as Method, { name: "refundPayment", contractName: "PaymentConditions", methodName: "refundPayment", - timeout: 10, + timeout: 1, parameters: [ { name: "assetId", type: "bytes32", - } as Parameter, - { + } as Parameter, { name: "price", type: "uint256", } as Parameter, @@ -126,10 +129,10 @@ export default class Access extends TemplateBase { events: [ { name: "PaymentRefund", - actorType: "consumer", + actorType: "publisher", handler: { moduleName: "serviceAgreement", - functionName: "fulfillAgreement", + functionName: "terminateAgreement", version: "0.1", } as EventHandler, } as Event,