witnetrequest2sheikahtemplate
Version:
CLI tool to convert a data request from [witnet's node](https://github.com/witnet/witnet-rust) format to a data request template readble for [Sheikah](https://github.com/witnet/sheikah).
49 lines (44 loc) • 1.37 kB
text/typescript
import cbor from 'cbor'
// Build a data request template from a witnet's node format data request
function buildTemplateFromRequest (request: Request): Template {
const dr = request.params.dro.data_request
return {
name: 'Data request',
description: 'description',
radRequest: {
notBefore: dr.time_lock,
retrieve: dr.retrieve.map((stage: EncodeRetrieveStage) => {
return {
...stage,
script: cbor.decodeFirstSync(
stage.script.map((op: number) => op.toString(16)).join('')
)
}
}),
aggregate: createTemplateAggregateTally(dr.aggregate),
tally: createTemplateAggregateTally(dr.tally)
}
}
}
// Build aggregation / tally script readable for a template
function createTemplateAggregateTally (
script: EncodeAggregateTallyScript
): TemplateAggregateTallyScript {
return {
filters: script.filters.map((filter: EncodeFilter) => {
return filter.args.length ||
(filter.args.length === 1 && filter.args[0] !== 128)
? [
filter.op,
...(filter.args.length
? cbor.decodeFirstSync(
filter.args.map((arg: number) => arg.toString(16)).join('')
)
: [])
]
: filter.op
}),
reducer: script.reducer
}
}
export { buildTemplateFromRequest }