-
Notifications
You must be signed in to change notification settings - Fork 66
/
request-utils.ts
39 lines (33 loc) · 1.54 KB
/
request-utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { encode } from '@api3/airnode-abi';
import { deriveSponsorWalletAddress, deriveAirnodeXpub } from '@api3/airnode-admin';
import { ethers } from 'ethers';
import { cliPrint, getAirnodeWallet, getDeployedContract, readConfig, readIntegrationInfo } from '../../src';
const coinLabel = 'Ethereum';
const coinId = coinLabel.toLowerCase();
const getEncodedParameters = () => encode([{ name: 'coinId', type: 'string32', value: coinId }]);
export const makeRequest = async () => {
const integrationInfo = readIntegrationInfo();
const requester = await getDeployedContract(`contracts/${integrationInfo.integration}/Requester.sol`);
const airnodeWallet = getAirnodeWallet();
const sponsor = ethers.Wallet.fromMnemonic(integrationInfo.mnemonic);
const endpointId = readConfig().triggers.rrp[0].endpointId;
const sponsorWalletAddress = await deriveSponsorWalletAddress(
deriveAirnodeXpub(airnodeWallet.mnemonic.phrase),
airnodeWallet.address,
sponsor.address
);
// Trigger the Airnode request
return requester.makeRequest(
airnodeWallet.address,
endpointId,
sponsor.address,
sponsorWalletAddress,
getEncodedParameters()
);
};
export const printResponse = async (requestId: string) => {
const integrationInfo = readIntegrationInfo();
const requester = await getDeployedContract(`contracts/${integrationInfo.integration}/Requester.sol`);
// Divided by 1e6, because the response value is multiplied with 1e6 by Airnode
cliPrint.info(`${coinLabel} price is ${(await requester.fulfilledData(requestId)) / 1e6} USD`);
};