UNPKG

@windingtree/wt-read-api

Version:

API to interact with the Winding Tree platform

61 lines (53 loc) 2.28 kB
const Web3 = require('web3'); const lib = require('zos-lib'); const { getSchemaVersion } = require('../../test/utils/schemas'); const provider = new Web3.providers.HttpProvider('http://localhost:8545'); const web3 = new Web3(provider); const Contracts = lib.Contracts; const Organization = Contracts.getFromNodeModules('@windingtree/wt-contracts', 'Organization'); const deployFullAirline = async (deploymentOptions, airlineDescription, flights, flightInstances) => { const dataFormatVersion = deploymentOptions.schemaVersion; const offChainDataAdapter = deploymentOptions.offChainDataClient; const accounts = await web3.eth.getAccounts(); const indexFile = {}; if (flightInstances) { for (const flight of flights.items) { flight.flightInstancesUri = await offChainDataAdapter.upload(JSON.stringify(flightInstances)); } } if (airlineDescription) { indexFile.descriptionUri = await offChainDataAdapter.upload(JSON.stringify(airlineDescription)); } if (flights) { indexFile.flightsUri = await offChainDataAdapter.upload(JSON.stringify(flights)); } indexFile.notificationsUri = 'https://notifications.example'; indexFile.bookingUri = 'https://booking.example'; indexFile.dataFormatVersion = dataFormatVersion; const dataUri = await offChainDataAdapter.upload(JSON.stringify(indexFile)); const orgJsonContent = { dataFormatVersion: getSchemaVersion('@windingtree/wt-airline-schemas'), name: airlineDescription.name, airline: { name: airlineDescription.name, apis: [ { entrypoint: dataUri, format: 'windingtree', }, { entrypoint: 'http://dummy.restapiexample.com/api/v1/employees', format: 'coolapi', }, ], }, }; const orgJsonString = JSON.stringify(orgJsonContent); const orgJsonUri = await offChainDataAdapter.upload(orgJsonString); const orgJsonHash = web3.utils.soliditySha3(orgJsonString); const airlineEvent = await deploymentOptions.factory.methods.createAndAddToDirectory(orgJsonUri, orgJsonHash, deploymentOptions.directoryAddress).send({ from: accounts[3] }); return Organization.at(airlineEvent.events.OrganizationCreated.returnValues.organization); }; module.exports = { deployFullAirline, };