gotify / gotify/plugin-api

Add GetMessages and DeleteMessage to MessageHandler

未關閉
#11 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Go
星號
16
分支
4
PR 合併指標
30 天內沒有已合併 PR

描述

Currently, the `MessageHandler` has an API gap in that it cannot list, get, or delete messages. This would be valuable for plugins who want to display a persistent notification while some event is ongoing.

I think the `MessageHandler` interface could just be extended with a few extra functions

```go
// MessageHandler consists of message callbacks to be used by plugins.
type MessageHandler interface {
// SendMessage sends a message with the given information in the request.
SendMessage(msg Message) error

// GetMessages returns all active messages sent by this plugin.
GetMessages() ([]Message, error)

// GetMessage returns a specific message by ID.
GetMessage(id uint) (*Message, error)

// DeleteMessages deletes all messages created by this plugin.
DeleteMessages() error

// DeleteMessage deletes a specific message by ID.
DeleteMessage(id uint) error
}
```

I think the `Message` struct might also need to be extended or a new struct would need to be defined that includes an ID.

As background, I want to make a plugin for Alertmanager where alerts will be persistently created as notifications in Gotify so that I only get one notification for the alert and it gets deleted automatically when it resolves. Additionally, I want to add special handling for the [watchdog alert](https://runbooks.prometheus-operator.dev/runbooks/general/watchdog/) so if Alertmanager stops sending it, I get a notification. With the current plugin API, I am only able to send messages when I get them from alertmanager.

If this is a desirable inclusion, I would love to implement it.

Relates to #7

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

先定位 MessageHandler 介面和 Message 結構,再追蹤它們在整個儲存庫中的實作和 API 使用情況。確定訊息 ID 應如何表示,以及對於 plugin,列出、取得和刪除應如何運作。介面和實作支援所要求的操作並具有一致的行為,即表示完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
go
領域
api, backend-api-design
Issue 類型
功能
難度
5/5
預估耗時
一週以上
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。