actions/transform-resource/transform-resource.mjs
import { ConfigurationError } from "@pipedream/platform"; import cloudinary from "../../cloudinary.app.mjs"; export default { key: "cloudinary-transform-resource", name: "Transform Resource", description: "Transform an image, video or audio asset on-the-fly with several options. [See the documentation](https://cloudinary.com/documentation/video_manipulation_and_delivery)", version: "0.0.2", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { cloudinary, assetId: { propDefinition: [ cloudinary, "assetId", ], }, info: { type: "alert", alertType: "info", content: `You can either select a pre-configured transformation or pass a transformation string. Both can be managed in the [Cloudinary Transformation Builder](https://tx.cloudinary.com/). \\ If both are specified, the transformation string will be ignored.`, }, namedTransformation: { propDefinition: [ cloudinary, "namedTransformation", ], }, transformationString: { propDefinition: [ cloudinary, "transformationString", ], }, }, async run({ $ }) { const { cloudinary, assetId, namedTransformation, transformationString, } = this; if (!namedTransformation && !transformationString) { throw new ConfigurationError("Either `Named Transformation` or `Transformation String` are required"); } try { const response = await cloudinary.transformAsset(assetId, namedTransformation ? { transformation: namedTransformation, } : { raw_transformation: transformationString, }); if (response) { $.export("$summary", "Successfully transformed resource"); } return response; } catch (err) { throw new Error(`Cloudinary error response: ${err.error?.message ?? JSON.stringify(err)}`); } }, };