with Plasmic and Sinch MessageMedia?
The Plasmic API enables you to tap into the powerful visual design features of Plasmic within Pipedream workflows. With it, you can automate the fetching, updating, and publishing of Plasmic projects and their components. This opens up possibilities for dynamic content management, design collaboration automation, and streamlined deployment processes. You can use the Plasmic API to integrate with various services, trigger updates across platforms, or synchronize design changes in real-time.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
plasmic: {
type: "app",
app: "plasmic",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://codegen.plasmic.app/api/v1/loader/html/preview/${this.plasmic.$auth.project_id}/{your_component_name}`,
headers: {
"x-plasmic-api-project-tokens": `${this.plasmic.$auth.project_id}:${this.plasmic.$auth.project_token}`,
},
})
},
})
import axios from "axios";
import crypto from 'crypto';
export default defineComponent({
props: {
sinch_messagemedia: {
type: "app",
app: "sinch_messagemedia",
}
},
async run({ steps, $ }) {
// Date header in RFC7231 format
const date = new Date().toUTCString();
// Signing string (No Content-MD5 needed as this is a GET request with no body)
const requestLine = 'GET /v1/messaging/numbers/sender_address/addresses/ HTTP/1.1';
const signingString = `Date: ${date}\n${requestLine}`;
// Creating HMAC-SHA1 hash
const hmac = crypto.createHmac('sha1', this.sinch_messagemedia.$auth.api_secret);
hmac.update(signingString);
// Base64 encode the hash
const signature = hmac.digest('base64');
// Prepare authentication header and make the request
const authHeader = `hmac username="${this.sinch_messagemedia.$auth.api_key}", algorithm="hmac-sha1", headers="Date request-line", signature="${signature}"`;
const response = await axios({
method: 'get',
url: `${this.sinch_messagemedia.$auth.api_url}/v1/messaging/numbers/sender_address/addresses/`,
headers: {
'Date': date,
'Authorization': authHeader,
'Accept': 'application/json'
}
});
return response.data;
},
})