mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-11-09 20:00:12 +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)
|
||||
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 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