UNPKG

@pipedream/pushbullet

Version:

Pipedream pushbullet Components

151 lines (136 loc) 3.56 kB
import pushbullet from "../../pushbullet.app.mjs"; import constants from "../common/constants.mjs"; export default { name: "Send push (Note, Link and File)", version: "0.0.1", key: "pushbullet-send-push", description: "Send a push to a device or another person. [See docs here](https://docs.pushbullet.com/#create-push)", type: "action", props: { pushbullet, device: { propDefinition: [ pushbullet, "device", ], }, email: { label: "Email", description: "Send the push to this email address. If that email address is associated with a Pushbullet user, we will send it directly to that user, otherwise we will fallback to sending an email to the email address (this will also happen if a user exists but has no devices registered).", type: "string", optional: true, }, channel_tag: { label: "Channel Tag ", description: "Send the push to all subscribers to your channel that has this tag.", type: "string", optional: true, }, type: { label: "Push Type", description: "The type of push you want to send", type: "string", options: constants.PUSH_TYPES, reloadProps: true, }, }, async additionalProps() { const title = { label: "Title", description: "", type: "string", }; const body = { label: "Body", description: "", type: "string", }; const url = { label: "Url", description: "The url to open", type: "string", }; const fileName = { label: "File Name", description: "The name of the file. E.g. \"john.jpg\"", type: "string", }; const fileType = { label: "File Type", description: "The MIME type of the file. E.g. \"image/jpeg\"", type: "string", }; const fileUrl = { label: "File URL", description: "The url for the file.", type: "string", }; switch (this.type) { case "note": title.description = "The note's title"; body.description = "The note's message"; return { title, body, }; case "link": title.description = "The link's title"; body.description = "A message associated with the link"; url.description = "The url to open"; return { title, body, url, }; case "file": body.description = "A message to go with the file"; return { body, fileName, fileType, fileUrl, }; } }, async run({ $ }) { if (this.type === "file") { const { fileName, fileType, fileUrl, } = this; const fileBuffer = await this.pushbullet.downloadFile({ fileUrl, $, }); const response = await this.pushbullet.getUploadUrl({ data: { file_name: fileName, file_type: fileType, }, $, }); await this.pushbullet.uploadFile({ uploadUrl: response.upload_url, fileBuffer, $, }); this.fileUrl = response.file_url; } const response = await this.pushbullet.sendPush({ data: { type: this.type, email: this.email, title: this.title, body: this.body, url: this.url, file_name: this.fileName, file_type: this.fileType, file_url: this.fileUrl, }, $, }); $.export("$summary", `Successfully send a push ${this.file}`); return response; }, };