with Phemex 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";
// Helper function to generate HMAC SHA256 signature
function generateSignature(secret, path, queryString, expiry, body = "") {
// Concatenate according to Phemex rules: Path + QueryString + Expiry + Body
const signedString = `${path}${queryString}${expiry}${body}`;
return crypto.createHmac("sha256", secret).update(signedString).digest("hex");
}
export default defineComponent({
props: {
phemex: {
type: "app",
app: "phemex",
}
},
async run({ steps, $ }) {
const path = "/accounts/accountPositions"; //Your Phemex API URL Path, QueryString, and body as needed
const queryString = "currency=BTC";
const body = ""; // For GET requests, no body
// Expiry: current Unix time + 60 seconds
const expiry = Math.floor(Date.now() / 1000) + 60;
// Generate signature
const signature = generateSignature(
this.phemex.$auth.api_secret,
path,
queryString,
expiry,
body
);
// Build headers
const headers = {
"x-phemex-access-token": this.phemex.$auth.api_key,
"x-phemex-request-expiry": expiry,
"x-phemex-request-signature": signature,
};
// Construct full URL
const url = `${this.phemex.$auth.api_url}${path}?${queryString}`;
// Make request
return await axios($, {
method: "GET", //Change the HTTP method accordingly, add body if needed
url,
headers,
});
},
})
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
},
})