with OKX Wallet and Node?
Write custom Node.js code and use any of the 400k+ npm packages available. Refer to the Pipedream Node docs to learn more.
import crypto from "crypto";
import { axios } from "@pipedream/platform";
export default defineComponent({
props: {
okx_wallet: {
type: "app",
app: "okx_wallet",
}
},
async run({ steps, $ }) {
// Pull credentials from $auth
const apiKey = this.okx_wallet.$auth.api_key;
const secretKey = this.okx_wallet.$auth.secret_key;
const passphrase = this.okx_wallet.$auth.passphrase;
// Hardcoded request parameters
const method = "GET";
const requestPath = "/api/v5/account/balance";
const body = ""; // GET request, no body
// Function to generate signed headers
const createSignedHeaders = ({ method, requestPath, body }) => {
const timestamp = new Date().toISOString(); // UTC ISO timestamp with ms
// Pre-hash string
const prehash = timestamp + method.toUpperCase() + requestPath + body;
// HMAC SHA256 signature, Base64 encoded
const hmac = crypto.createHmac("sha256", secretKey);
hmac.update(prehash);
const signature = hmac.digest("base64");
return {
"OK-ACCESS-KEY": apiKey,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": passphrase,
"Content-Type": "application/json",
};
};
// Generate headers
const headers = createSignedHeaders({ method, requestPath, body });
// Full URL
const url = `${this.okx_wallet.$auth.api_url}${requestPath}`;
// Make request and return reponse to next step
return await axios($, {
method,
url,
headers,
data: body || undefined,
});
},
})
Develop, run and deploy your Node.js code in Pipedream workflows, using it between no-code steps, with connected accounts, or integrate Data Stores and File Stores
This includes installing NPM packages, within your code without having to manage a package.json file or running npm install.
Below is an example of installing the axios package in a Pipedream Node.js code step. Pipedream imports the axios package, performs the API request, and shares the response with subsequent workflow steps:
// To use previous step data, pass the `steps` object to the run() function
export default defineComponent({
async run({ steps, $ }) {
// Return data to use it in future steps
return steps.trigger.event
},
})