with JLCPCB and Twilio SendGrid?
Allows you to add one or more email addresses to the global suppressions group. See the docs here
Allows you to create a new contact list. See the docs here
Allows you to delete all email addresses on your blocks list. See the docs here
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 Twilio SendGrid API opens up a world of possibilities for email automation, enabling you to send emails efficiently and track their performance. With this API, you can programmatically create and send personalized email campaigns, manage contacts, and parse inbound emails for data extraction. When you harness the power of Pipedream, you can connect SendGrid to 3,000+ other apps to automate workflows, such as triggering email notifications based on specific actions, syncing email stats with your analytics, or handling incoming emails to create tasks or tickets.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
sendgrid: {
type: "app",
app: "sendgrid",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.sendgrid.com/v3/user/account`,
headers: {
Authorization: `Bearer ${this.sendgrid.$auth.api_key}`,
},
})
},
})
