feat: Phase 5 — filtres, actions Ntfy, outgoing webhooks, state file
CI / test (push) Successful in 2m34s
CI / test (push) Successful in 2m34s
- Filtres avancés: drop, set_priority, add_tag avec wildcard * (filter_outgoing.v) - Notifications structurées: click_url + actions (ntfy.v + sources/event.v) - Webhook sortant: Slack, Discord, JSON (filter_outgoing.v) - Fichier d'état: persistance poll_state + silence_until (filter_outgoing.v) - Config: sections filters, outgoing, state (config.v) - Tests: 9 nouveaux tests unitaires (filter_outgoing_test.v) - Docs: ROADMAP Phase 5 4/8, version 0.5.0
This commit is contained in:
+26
-14
@@ -2,27 +2,39 @@ module sources
|
||||
|
||||
pub struct Event {
|
||||
pub mut:
|
||||
source string
|
||||
name string
|
||||
topic string
|
||||
priority int
|
||||
tags []string
|
||||
message string
|
||||
raw string
|
||||
source string
|
||||
name string
|
||||
topic string
|
||||
priority int
|
||||
tags []string
|
||||
message string
|
||||
raw string
|
||||
click_url string // v0.5: URL opened when notification is clicked
|
||||
actions []Action // v0.5: Ntfy action buttons
|
||||
}
|
||||
|
||||
pub fn (e Event) clone() Event {
|
||||
return Event{
|
||||
source: e.source
|
||||
name: e.name
|
||||
topic: e.topic
|
||||
priority: e.priority
|
||||
tags: e.tags.clone()
|
||||
message: e.message
|
||||
raw: e.raw
|
||||
source: e.source
|
||||
name: e.name
|
||||
topic: e.topic
|
||||
priority: e.priority
|
||||
tags: e.tags.clone()
|
||||
message: e.message
|
||||
raw: e.raw
|
||||
click_url: e.click_url
|
||||
actions: e.actions.clone()
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Action {
|
||||
pub:
|
||||
action string // view, broadcast, http
|
||||
label string
|
||||
url string
|
||||
clear bool // whether to dismiss notification after action
|
||||
}
|
||||
|
||||
pub struct GiteaSource {
|
||||
pub mut:
|
||||
name string @[json: 'name']
|
||||
|
||||
Reference in New Issue
Block a user