with JLCPCB and Pipedream Utils?
Get memory usage statistics for the current Pipedream workflow.
Convert an object to a JSON format string
Add or subtract time from a given input
Get the duration between two dates in days, hours, minutes, and seconds along with checking if they are the same.
import { axios } from "@pipedream/platform"
import crypto from "crypto"
export default defineComponent({
props: {
jlcpcb: {
type: "app",
app: "jlcpcb",
}
},
async run({ steps, $ }) {
const appCtx = this;
function generateNonce() {
return crypto.randomBytes(16).toString('hex');
}
function buildStringToSign(method, path, timestamp, nonce, body = '') {
return `${method.toUpperCase()}\n${path}\n${timestamp}\n${nonce}\n${body}\n`;
}
function signString(stringToSign, secretKey) {
const hmac = crypto.createHmac('sha256', secretKey);
hmac.update(stringToSign, 'utf8');
return hmac.digest('base64');
}
function getAuthHeader(method, path, body, appId, accessKey, secretKey) {
const nonce = generateNonce();
const timestamp = Math.floor(Date.now() / 1000);
const stringToSign = buildStringToSign(method, path, timestamp, nonce, body);
const signature = signString(stringToSign, secretKey);
return `JOP appid="${appId}", accesskey="${accessKey}", nonce="${nonce}", timestamp="${timestamp}", signature="${signature}"`;
}
async function queryOrder() {
const appId = appCtx.jlcpcb.$auth.app_id;
const accessKey = appCtx.jlcpcb.$auth.access_key;
const secretKey = appCtx.jlcpcb.$auth.secret_key;
const method = "POST";
const path = "/overseas/openapi/pcb/order/detail";
const bodyObj = { batchNumber: "BATCH12345" };
const body = JSON.stringify(bodyObj);
const authHeader = getAuthHeader(method, path, body, appId, accessKey, secretKey);
const response = await axios($, {
method, url: `https://open.jlcpcb.com${path}`, data: bodyObj,
headers: {
"Content-Type": "application/json",
"Authorization": authHeader
}
});
return response;
}
return await queryOrder();
},
})
The Pipedream Utils app is a set of pre-built functions that streamline common tasks in your workflows. It acts like a Swiss Army knife for developers, providing essential tools such as format conversion, date manipulation, and text processing. By leveraging these functions, you can reduce the boilerplate code needed for routine operations, speeding up the development of intricate automations. The Helper Functions API can be a game changer when it comes to tasks like parsing dates in user-friendly formats, encoding and decoding data, or generating UUIDs, making them more efficient and less error-prone.
export default defineComponent({
props: {
pipedream_utils: {
type: "app",
app: "pipedream_utils",
}
},
async run({steps, $}) {
},
})