1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/test/integration/utils/ddo-metadata-generator.ts

108 lines
3.2 KiB
TypeScript

import { MetaData, MetaDataAlgorithm, Ocean, Account } from '../../../src' // @oceanprotocol/squid
import { ServiceCompute } from '../../../src/ddo/Service'
const metadata: Partial<MetaData> = {
main: {
name: undefined,
type: undefined,
dateCreated: '2012-10-10T17:00:00Z',
datePublished: '2012-10-10T17:00:00Z',
author: 'Met Office',
license: 'CC-BY',
price: '21' + '0'.repeat(18),
files: [
{
index: 0,
contentType: 'application/json',
url:
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/package.json'
},
{
index: 1,
contentType: 'text/plain',
url:
'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/README.md'
}
]
},
additionalInformation: {
description: 'Weather information of UK including temperature and humidity',
copyrightHolder: 'Met Office',
workExample: '423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68',
links: [
{
name: 'Sample of Asset Data',
type: 'sample',
url: 'https://foo.com/sample.csv'
},
{
name: 'Data Format Definition',
type: 'format',
url: 'https://foo.com/sample.csv'
}
],
inLanguage: 'en',
categories: ['Economy', 'Data Science'],
tags: ['weather', 'uk', '2011', 'temperature', 'humidity']
}
}
const algorithmMeta: MetaDataAlgorithm = {
language: 'scala',
format: 'docker-image',
version: '0.1',
container: {
entrypoint: 'ocean-entrypoint.sh',
image: 'node',
tag: '10'
}
}
export const generateMetadata = (
name: string,
type?: 'dataset' | 'algorithm',
price?: number
): Partial<MetaData> => ({
main: {
...metadata.main,
name,
type: type || 'dataset',
price: (price || 21) + '0'.repeat(18),
algorithm: type === 'algorithm' ? algorithmMeta : undefined
},
additionalInformation: {
...metadata.additionalInformation
}
})
export const getMetadata = (price?: number, type?: 'dataset' | 'algorithm') =>
generateMetadata('TestAsset', type, price)
export const createComputeService = async (
ocean: Ocean,
publisher: Account,
price: string,
datePublished: string
): Promise<ServiceCompute> => {
const { templates } = ocean.keeper
const serviceAgreementTemplate = await templates.escrowComputeExecutionTemplate.getServiceAgreementTemplate()
const name = 'dataAssetComputingServiceAgreement'
return {
type: 'compute',
index: 3,
serviceEndpoint: ocean.brizo.getComputeEndpoint(),
templateId: templates.escrowComputeExecutionTemplate.getId(),
attributes: {
main: {
creator: publisher.getId(),
datePublished,
price,
timeout: 3600,
name
},
serviceAgreementTemplate
}
}
}