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

map parameter values

This commit is contained in:
Sebastian Gerske 2018-11-20 10:43:11 +01:00
parent dfff8fc228
commit cc91cdb054
5 changed files with 64 additions and 17 deletions

4
src/models/InputType.ts Normal file
View File

@ -0,0 +1,4 @@
export default class InputType {
public name: string
public type: string
}

View File

@ -1,7 +1,9 @@
import InputType from "./InputType"
export default class MethodReflection { export default class MethodReflection {
public contractName: string public contractName: string
public methodName: string public methodName: string
public address: string public address: string
public signature: string public signature: string
public inputs: any[] public inputs: InputType[]
} }

View File

@ -13,7 +13,7 @@ import Service from "../ddo/Service"
import Keeper from "../keeper/Keeper" import Keeper from "../keeper/Keeper"
import Web3Provider from "../keeper/Web3Provider" import Web3Provider from "../keeper/Web3Provider"
import Config from "../models/Config" import Config from "../models/Config"
import ValuePair from "../models/ValuePair" import InputType from "../models/InputType"
import ValueType from "../models/ValueType" import ValueType from "../models/ValueType"
import SecretStoreProvider from "../secretstore/SecretStoreProvider" import SecretStoreProvider from "../secretstore/SecretStoreProvider"
import Logger from "../utils/Logger" import Logger from "../utils/Logger"
@ -92,13 +92,31 @@ export default class Ocean {
} as Event, } as Event,
] ]
const parameters: Parameter[] = condition.methodReflection.inputs.map((input: ValuePair) => { const mapParameterValueToName = (name) => {
switch (name) {
case "price":
return metadata.base.price
case "assetId":
return "0x" + id
case "documentKeyId":
return "0x1234"
}
return null
}
const parameters: Parameter[] = condition.methodReflection.inputs.map((input: InputType) => {
return { return {
...input, name: input.name,
value: "xxx", type: input.type,
value: mapParameterValueToName(input.name),
} as Parameter } as Parameter
}) })
// Logger.log(`${condition.methodReflection.contractName}.${condition.methodReflection.methodName}`,
// JSON.stringify(parameters, null, 2))
return { return {
contractName: condition.methodReflection.contractName, contractName: condition.methodReflection.contractName,
methodName: condition.methodReflection.methodName, methodName: condition.methodReflection.methodName,

View File

@ -4,6 +4,7 @@ import Service from "../../ddo/Service"
import Keeper from "../../keeper/Keeper" import Keeper from "../../keeper/Keeper"
import Web3Provider from "../../keeper/Web3Provider" import Web3Provider from "../../keeper/Web3Provider"
import ValuePair from "../../models/ValuePair" import ValuePair from "../../models/ValuePair"
import Logger from "../../utils/Logger"
import Account from "../Account" import Account from "../Account"
import OceanBase from "../OceanBase" import OceanBase from "../OceanBase"
@ -99,7 +100,11 @@ export default class ServiceAgreement extends OceanBase {
} }
private static hashSingleValue(data: ValuePair): string { private static hashSingleValue(data: ValuePair): string {
return Web3Provider.getWeb3().utils.soliditySha3(data).toString("hex") try {
return Web3Provider.getWeb3().utils.soliditySha3(data).toString("hex")
} catch (err) {
Logger.error(`Hashing of ${JSON.stringify(data, null, 2)} failed.`)
}
} }
private static hashServiceAgreement(serviceAgreementTemplateId: string, serviceAgreementId: string, private static hashServiceAgreement(serviceAgreementTemplateId: string, serviceAgreementId: string,
@ -130,10 +135,15 @@ export default class ServiceAgreement extends OceanBase {
service.conditions.forEach((condition) => { service.conditions.forEach((condition) => {
condition.parameters.forEach((parameter) => { condition.parameters.forEach((parameter) => {
values.push({type: parameter.type, value: parameter.value} as ValuePair) values.push({
type: parameter.type,
value: parameter.name === "serviceId" ? "0x" + serviceAgreementId : parameter.value,
} as ValuePair)
}) })
}) })
// Logger.log("Values", JSON.stringify(values, null, 2))
return values return values
} }

View File

@ -7,7 +7,7 @@ import EventHandlers from "../../src/ddo/EventHandlers"
import MetaData from "../../src/ddo/MetaData" import MetaData from "../../src/ddo/MetaData"
import Parameter from "../../src/ddo/Parameter" import Parameter from "../../src/ddo/Parameter"
import Service from "../../src/ddo/Service" import Service from "../../src/ddo/Service"
import ValuePair from "../../src/models/ValuePair" import InputType from "../../src/models/InputType"
import Account from "../../src/ocean/Account" import Account from "../../src/ocean/Account"
import IdGenerator from "../../src/ocean/IdGenerator" import IdGenerator from "../../src/ocean/IdGenerator"
import Ocean from "../../src/ocean/Ocean" import Ocean from "../../src/ocean/Ocean"
@ -28,6 +28,8 @@ let consumerAccount: Account
let accessService: Service let accessService: Service
let metaDataService: Service let metaDataService: Service
const assetId: string = IdGenerator.generateId()
describe("ServiceAgreement", () => { describe("ServiceAgreement", () => {
before(async () => { before(async () => {
@ -39,6 +41,7 @@ describe("ServiceAgreement", () => {
publisherAccount = accounts[1] publisherAccount = accounts[1]
consumerAccount = accounts[2] consumerAccount = accounts[2]
const metadata = new MetaData()
const serviceAgreementTemplate: ServiceAgreementTemplate = const serviceAgreementTemplate: ServiceAgreementTemplate =
new ServiceAgreementTemplate(new Access()) new ServiceAgreementTemplate(new Access())
@ -62,10 +65,25 @@ describe("ServiceAgreement", () => {
} as Event, } as Event,
] ]
const parameters: Parameter[] = condition.methodReflection.inputs.map((input: ValuePair) => { const mapParameterValueToName = (name) => {
switch (name) {
case "price":
return metadata.base.price
case "assetId":
return "0x" + assetId
case "documentKeyId":
return "0x1234"
}
return null
}
const parameters: Parameter[] = condition.methodReflection.inputs.map((input: InputType) => {
return { return {
...input, name: input.name,
value: "xxx", type: input.type,
value: mapParameterValueToName(input.name),
} as Parameter } as Parameter
}) })
@ -92,7 +110,7 @@ describe("ServiceAgreement", () => {
metaDataService = { metaDataService = {
type: "MetaData", type: "MetaData",
metadata: new MetaData(), metadata,
} as Service } as Service
}) })
@ -102,7 +120,6 @@ describe("ServiceAgreement", () => {
const id: string = IdGenerator.generateId() const id: string = IdGenerator.generateId()
const did: string = `did:op:${id}` const did: string = `did:op:${id}`
const ddo = new DDO({id: did, service: [accessService]}) const ddo = new DDO({id: did, service: [accessService]})
const assetId: string = IdGenerator.generateId()
const serviceAgreementId: string = IdGenerator.generateId() const serviceAgreementId: string = IdGenerator.generateId()
// @ts-ignore // @ts-ignore
@ -123,7 +140,6 @@ describe("ServiceAgreement", () => {
const id: string = IdGenerator.generateId() const id: string = IdGenerator.generateId()
const did: string = `did:op:${id}` const did: string = `did:op:${id}`
const ddo = new DDO({id: did, service: [accessService]}) const ddo = new DDO({id: did, service: [accessService]})
const assetId: string = IdGenerator.generateId()
const serviceAgreementId: string = IdGenerator.generateId() const serviceAgreementId: string = IdGenerator.generateId()
// @ts-ignore // @ts-ignore
@ -149,7 +165,6 @@ describe("ServiceAgreement", () => {
const id: string = IdGenerator.generateId() const id: string = IdGenerator.generateId()
const did: string = `did:op:${id}` const did: string = `did:op:${id}`
const ddo = new DDO({id: did, service: [accessService]}) const ddo = new DDO({id: did, service: [accessService]})
const assetId: string = IdGenerator.generateId()
const serviceAgreementId: string = IdGenerator.generateId() const serviceAgreementId: string = IdGenerator.generateId()
// @ts-ignore // @ts-ignore
@ -175,7 +190,6 @@ describe("ServiceAgreement", () => {
const id: string = IdGenerator.generateId() const id: string = IdGenerator.generateId()
const did: string = `did:op:${id}` const did: string = `did:op:${id}`
const ddo = new DDO({id: did, service: [accessService, metaDataService]}) const ddo = new DDO({id: did, service: [accessService, metaDataService]})
const assetId: string = IdGenerator.generateId()
const serviceAgreementId: string = IdGenerator.generateId() const serviceAgreementId: string = IdGenerator.generateId()
// @ts-ignore // @ts-ignore
@ -202,7 +216,6 @@ describe("ServiceAgreement", () => {
const id: string = IdGenerator.generateId() const id: string = IdGenerator.generateId()
const did: string = `did:op:${id}` const did: string = `did:op:${id}`
const ddo = new DDO({id: did, service: [accessService]}) const ddo = new DDO({id: did, service: [accessService]})
const assetId: string = IdGenerator.generateId()
const serviceAgreementId: string = IdGenerator.generateId() const serviceAgreementId: string = IdGenerator.generateId()
// @ts-ignore // @ts-ignore