Use API v2 for Bark notification (#2759)

* Use API v2 for Bark notification

* API v2 endpoint should end with path `/push`

* Support both v1 and v2

* Flip the bool

* Allow selecting api version

* Apply review suggestion

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

* Add translated string to `en.json`

* Apply review suggestion

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

---------

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
This commit is contained in:
Chongyi Zheng
2023-09-21 09:08:04 -04:00
committed by GitHub
parent de7bc487ed
commit 499429858c
3 changed files with 26 additions and 8 deletions

View File

@@ -46,8 +46,7 @@ class Bark extends NotificationProvider {
}
/**
* Add additional parameter for better on device styles (iOS 15
* optimized)
* Add additional parameter for Bark v1 endpoints
* @param {BeanModel} notification Notification to send
* @param {string} postUrl URL to append parameters to
* @returns {string} Additional URL parameters
@@ -96,12 +95,23 @@ class Bark extends NotificationProvider {
* @returns {string} Success message
*/
async postNotification(notification, title, subtitle, endpoint) {
// url encode title and subtitle
title = encodeURIComponent(title);
subtitle = encodeURIComponent(subtitle);
let postUrl = endpoint + "/" + title + "/" + subtitle;
postUrl = this.appendAdditionalParameters(notification, postUrl);
let result = await axios.get(postUrl);
let result;
if (notification.apiVersion === "v1" || notification.apiVersion == null) {
// url encode title and subtitle
title = encodeURIComponent(title);
subtitle = encodeURIComponent(subtitle);
let postUrl = endpoint + "/" + title + "/" + subtitle;
postUrl = this.appendAdditionalParameters(notification, postUrl);
result = await axios.get(postUrl);
} else {
result = await axios.post(`${endpoint}/push`, {
title,
body: subtitle,
icon: barkNotificationAvatar,
sound: notification.barkSound || "telegraph", // default sound is telegraph
group: notification.barkGroup || "UptimeKuma", // default group is UptimeKuma
});
}
this.checkResult(result);
if (result.statusText != null) {
return "Bark notification succeed: " + result.statusText;