From f5917af8f3aa96f4252a2bb27f661397e3e86b8e Mon Sep 17 00:00:00 2001 From: pomeloy <45542782+pomeloy@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:04:22 +0100 Subject: [PATCH] Add Pushover notification adapter (#91) * Add Pushover notification adapter --- lib/notification/adapter/pushover.js | 50 ++++++++++++++++++++++++++++ lib/notification/adapter/pushover.md | 5 +++ 2 files changed, 55 insertions(+) create mode 100644 lib/notification/adapter/pushover.js create mode 100644 lib/notification/adapter/pushover.md diff --git a/lib/notification/adapter/pushover.js b/lib/notification/adapter/pushover.js new file mode 100644 index 0000000..608ee24 --- /dev/null +++ b/lib/notification/adapter/pushover.js @@ -0,0 +1,50 @@ +import { markdown2Html } from '../../services/markdown.js'; +import { getJob } from '../../services/storage/jobStorage.js'; +import fetch from 'node-fetch'; + +export const send = ({ serviceName, newListings, notificationConfig, jobKey }) => { + const { token, user, device } = notificationConfig.find((adapter) => adapter.id === config.id).fields; + const job = getJob(jobKey); + const jobName = job == null ? jobKey : job.name; + const promises = newListings.map((newListing) => { + const title = `${serviceName}: ${newListing.title}`; + const message = `Address: ${newListing.address}\nSize: ${newListing.size}\nPrice: ${newListing.price}\nLink: ${newListing.link}`; + return fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: token, + user: user, + message: message, + device: device, + title: newListing.title, + }), + }); + }); + + return Promise.all(promises); +}; + +export const config = { + id: 'pushover', + name: 'Pushover', + readme: markdown2Html('lib/notification/adapter/pushover.md'), + description: 'Fredy will send new listings to your mobile using Pushover.', + fields: { + token: { + type: 'text', + label: 'API token', + description: 'Your application\'s API token.', + }, + user: { + type: 'text', + label: 'User key', + description: 'Your user/group key.', + }, + device: { + type: 'text', + label: 'Device name', + description: 'The device name to send your notification to. Messages may be addressed to multiple specific devices by joining them with a comma.', + }, + }, +}; diff --git a/lib/notification/adapter/pushover.md b/lib/notification/adapter/pushover.md new file mode 100644 index 0000000..4eaf0a3 --- /dev/null +++ b/lib/notification/adapter/pushover.md @@ -0,0 +1,5 @@ +### Pushover Adapter + +Refer to the [instructions](https://support.pushover.net/i7-what-is-pushover-and-how-do-i-use-it) to set up your Pushover application. + +After setting up the application, please enter both your newly created User key and API token. \ No newline at end of file