mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 17:10:10 +00:00
jellyseerr: add notifications related methods
similar in style to User, with Notifications/NotificationsTemplate, and named fields for modifying discord and telegram IDs, and two modify methods.
This commit is contained in:
parent
73e985c45c
commit
7b9cdf385a
@ -325,3 +325,53 @@ func (js *Jellyseerr) DeleteUser(jfID string) error {
|
|||||||
delete(js.userCache, jfID)
|
delete(js.userCache, jfID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (js *Jellyseerr) GetNotificationPreferences(jfID string) (Notifications, error) {
|
||||||
|
var data Notifications
|
||||||
|
u, err := js.MustGetUser(jfID)
|
||||||
|
if err != nil {
|
||||||
|
return data, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, status, err := js.getJSON(fmt.Sprintf(js.server+"/user/%d/settings/notifications", u.ID), nil, url.Values{})
|
||||||
|
if err != nil {
|
||||||
|
return data, err
|
||||||
|
}
|
||||||
|
if status != 200 {
|
||||||
|
return data, fmt.Errorf("failed (error %d)", status)
|
||||||
|
}
|
||||||
|
err = json.Unmarshal([]byte(resp), &data)
|
||||||
|
return data, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (js *Jellyseerr) ApplyNotificationsTemplateToUser(jfID string, tmpl NotificationsTemplate) error {
|
||||||
|
u, err := js.MustGetUser(jfID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, status, err := js.post(fmt.Sprintf(js.server+"/user/%d/settings/notifications", u.ID), tmpl, false)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if status != 200 && status != 201 {
|
||||||
|
return fmt.Errorf("failed (error %d)", status)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (js *Jellyseerr) ModifyNotifications(jfID string, conf map[NotificationsField]string) error {
|
||||||
|
u, err := js.MustGetUser(jfID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, status, err := js.post(fmt.Sprintf(js.server+"/user/%d/settings/notifications", u.ID), conf, false)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if status != 200 && status != 201 {
|
||||||
|
return fmt.Errorf("failed (error %d)", status)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -56,3 +56,45 @@ type permissionsDTO struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Permissions int
|
type Permissions int
|
||||||
|
|
||||||
|
type NotificationTypes struct {
|
||||||
|
Discord int `json:"discord"`
|
||||||
|
Email int `json:"email"`
|
||||||
|
Pushbullet int `json:"pushbullet"`
|
||||||
|
Pushover int `json:"pushover"`
|
||||||
|
Slack int `json:"slack"`
|
||||||
|
Telegram int `json:"telegram"`
|
||||||
|
Webhook int `json:"webhook"`
|
||||||
|
Webpush int `json:"webpush"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type NotificationsField string
|
||||||
|
|
||||||
|
const (
|
||||||
|
FieldDiscord NotificationsField = "discordId"
|
||||||
|
FieldTelegram NotificationsField = "telegramChatId"
|
||||||
|
FieldEmailEnabled NotificationsField = "emailEnabled"
|
||||||
|
FieldDiscordEnabled NotificationsField = "discordEnabled"
|
||||||
|
FieldTelegramEnabled NotificationsField = "telegramEnabled"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Notifications struct {
|
||||||
|
NotificationsTemplate
|
||||||
|
PgpKey any `json:"pgpKey"`
|
||||||
|
DiscordID string `json:"discordId"`
|
||||||
|
PushbulletAccessToken any `json:"pushbulletAccessToken"`
|
||||||
|
PushoverApplicationToken any `json:"pushoverApplicationToken"`
|
||||||
|
PushoverUserKey any `json:"pushoverUserKey"`
|
||||||
|
TelegramChatID string `json:"telegramChatId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type NotificationsTemplate struct {
|
||||||
|
EmailEnabled bool `json:"emailEnabled"`
|
||||||
|
DiscordEnabled bool `json:"discordEnabled"`
|
||||||
|
DiscordEnabledTypes int `json:"discordEnabledTypes"`
|
||||||
|
PushoverSound any `json:"pushoverSound"`
|
||||||
|
TelegramEnabled bool `json:"telegramEnabled"`
|
||||||
|
TelegramSendSilently any `json:"telegramSendSilently"`
|
||||||
|
WebPushEnabled bool `json:"webPushEnabled"`
|
||||||
|
NotifTypes NotificationTypes `json:"notificationTypes"`
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user