mirror of
https://github.com/oceanprotocol-archive/squid-js.git
synced 2024-02-02 15:31:51 +01:00
Handle the access granted event. Invoke the consume endpoint. Fix issue in the generated serviceEndpoint.
This commit is contained in:
parent
30fa16d1d5
commit
1756903005
5
package-lock.json
generated
5
package-lock.json
generated
@ -2350,6 +2350,11 @@
|
|||||||
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
|
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"file-saver": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-cYM1ic5DAkg25pHKgi5f10ziAM7RJU37gaH1XQlyNDrtUnzhC/dfoV9zf2OmF0RMKi42jG5B0JWBnPQqyj/G6g=="
|
||||||
|
},
|
||||||
"file-type": {
|
"file-type": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
"eth-crypto": "^1.2.7",
|
"eth-crypto": "^1.2.7",
|
||||||
"eth-ecies": "^1.0.3",
|
"eth-ecies": "^1.0.3",
|
||||||
"ethereumjs-util": "^6.0.0",
|
"ethereumjs-util": "^6.0.0",
|
||||||
|
"file-saver": "^2.0.0",
|
||||||
"jsonwebtoken": "^8.4.0",
|
"jsonwebtoken": "^8.4.0",
|
||||||
"node-fetch": "^2.3.0",
|
"node-fetch": "^2.3.0",
|
||||||
"uuid": "^3.3.2",
|
"uuid": "^3.3.2",
|
||||||
|
@ -15,8 +15,8 @@ export default class Brizo {
|
|||||||
return `${this.url}${apiPath}/access/purchase?`
|
return `${this.url}${apiPath}/access/purchase?`
|
||||||
}
|
}
|
||||||
|
|
||||||
public getConsumeEndpoint(pubKey: string, serviceId: string, url: string) {
|
public getConsumeEndpoint() {
|
||||||
return `${this.url}${apiPath}/consume?pubKey=${pubKey}&serviceId=${serviceId}&url=${url}`
|
return `${this.url}${apiPath}/consume`
|
||||||
}
|
}
|
||||||
|
|
||||||
public getComputeEndpoint(pubKey: string, serviceId: string, algo: string, container: string) {
|
public getComputeEndpoint(pubKey: string, serviceId: string, algo: string, container: string) {
|
||||||
|
@ -23,12 +23,11 @@ import * as config from "./config.json"
|
|||||||
copyrightHolder: "Met Office",
|
copyrightHolder: "Met Office",
|
||||||
encoding: "UTF-8",
|
encoding: "UTF-8",
|
||||||
compression: "zip",
|
compression: "zip",
|
||||||
contentType: "text/csv",
|
contentType: "Application/pdf",
|
||||||
// tslint:disable-next-line
|
// tslint:disable-next-line
|
||||||
workExample: "stationId,latitude,longitude,datetime,temperature,humidity423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68",
|
workExample: "stationId,latitude,longitude,datetime,temperature,humidity423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68",
|
||||||
contentUrls: [
|
contentUrls: [
|
||||||
"https://testocnfiles.blob.core.windows.net/testfiles/testzkp.zip",
|
"https://testocnfiles.blob.core.windows.net/testfiles/testzkp.pdf"
|
||||||
"https://testocnfiles.blob.core.windows.net/testfiles/testzkp.zip",
|
|
||||||
],
|
],
|
||||||
links: [
|
links: [
|
||||||
{sample1: "http://data.ceda.ac.uk/badc/ukcp09/data/gridded-land-obs/gridded-land-obs-daily/"},
|
{sample1: "http://data.ceda.ac.uk/badc/ukcp09/data/gridded-land-obs/gridded-land-obs-daily/"},
|
||||||
@ -42,7 +41,7 @@ import * as config from "./config.json"
|
|||||||
} as MetaData)
|
} as MetaData)
|
||||||
|
|
||||||
const ddo: DDO = await ocean.registerAsset(metaData, publisher)
|
const ddo: DDO = await ocean.registerAsset(metaData, publisher)
|
||||||
Logger.log("did", ddo.id)
|
Logger.log("Registered asset with did:", ddo.id)
|
||||||
|
|
||||||
const accessService = ddo.findServiceByType("Access")
|
const accessService = ddo.findServiceByType("Access")
|
||||||
|
|
||||||
|
@ -24,7 +24,10 @@ import ServiceAgreement from "./ServiceAgreements/ServiceAgreement"
|
|||||||
import ServiceAgreementTemplate from "./ServiceAgreements/ServiceAgreementTemplate"
|
import ServiceAgreementTemplate from "./ServiceAgreements/ServiceAgreementTemplate"
|
||||||
import Access from "./ServiceAgreements/Templates/Access"
|
import Access from "./ServiceAgreements/Templates/Access"
|
||||||
|
|
||||||
|
import { saveAs } from "file-saver"
|
||||||
|
|
||||||
import EventListener from "../keeper/EventListener"
|
import EventListener from "../keeper/EventListener"
|
||||||
|
import WebServiceConnectorProvider from "../utils/WebServiceConnectorProvider"
|
||||||
|
|
||||||
export default class Ocean {
|
export default class Ocean {
|
||||||
|
|
||||||
@ -100,8 +103,7 @@ export default class Ocean {
|
|||||||
{
|
{
|
||||||
type: template.templateName,
|
type: template.templateName,
|
||||||
purchaseEndpoint: brizo.getPurchaseEndpoint(),
|
purchaseEndpoint: brizo.getPurchaseEndpoint(),
|
||||||
serviceEndpoint: brizo.getConsumeEndpoint(publisher.getId(),
|
serviceEndpoint: brizo.getConsumeEndpoint(),
|
||||||
accessServiceDefinitionId, metadata.base.contentUrls[0]),
|
|
||||||
// the id of the service agreement?
|
// the id of the service agreement?
|
||||||
serviceDefinitionId: accessServiceDefinitionId,
|
serviceDefinitionId: accessServiceDefinitionId,
|
||||||
// the id of the service agreement template
|
// the id of the service agreement template
|
||||||
@ -186,7 +188,34 @@ export default class Ocean {
|
|||||||
metadataService.metadata.base.price,
|
metadataService.metadata.base.price,
|
||||||
consumer,
|
consumer,
|
||||||
)
|
)
|
||||||
Logger.log("Paid asset")
|
Logger.log("Completed asset payment, now access should be granted.")
|
||||||
|
})
|
||||||
|
const accessEvent: ContractEvent = EventListener.subscribe(
|
||||||
|
accessService.conditions[1].contractName,
|
||||||
|
accessService.conditions[1].events[1].name, {})
|
||||||
|
accessEvent.listenOnce(async (data) => {
|
||||||
|
Logger.log("Awesome; got a AccessGranted Event. Let's download the asset files.")
|
||||||
|
const webConnector = WebServiceConnectorProvider.getConnector()
|
||||||
|
const contentUrls = await SecretStoreProvider.getSecretStore()
|
||||||
|
.decryptDocument(id, metadataService.metadata.base.contentUrls[0])
|
||||||
|
const serviceUrl: string = accessService.serviceEndpoint
|
||||||
|
Logger.log("Consuming asset files using service url: ", serviceUrl)
|
||||||
|
for (const cUrl of contentUrls) {
|
||||||
|
let url: string = serviceUrl + `?url=${cUrl}`
|
||||||
|
url = url + `&serviceAgreementId=${serviceAgreementId}`
|
||||||
|
url = url + `&consumerAddress=${consumer.getId()}`
|
||||||
|
Logger.log("Fetching asset from: ", url)
|
||||||
|
const response: any = await webConnector.get(url)
|
||||||
|
const blob: object = await response.blob()
|
||||||
|
// Logger.log("response: ", response.headers, response)
|
||||||
|
const parts: string[] = cUrl.split("/")
|
||||||
|
const filename: string = parts[parts.length - 1]
|
||||||
|
Logger.log("got blob: ", filename, blob)
|
||||||
|
// :FIXME: this does not save the file, debug and fix
|
||||||
|
saveAs(blob, "./downloads/" + filename)
|
||||||
|
Logger.log("saved file to:", "./downloads/" + filename)
|
||||||
|
}
|
||||||
|
Logger.log("Done downloading asset files.")
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user