| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package server
- import (
- "heckel.io/ntfy/util"
- "time"
- )
- // List of possible events
- const (
- openEvent = "open"
- keepaliveEvent = "keepalive"
- messageEvent = "message"
- )
- const (
- messageIDLength = 10
- )
- // message represents a message published to a topic
- type message struct {
- ID string `json:"id"` // Random message ID
- Time int64 `json:"time"` // Unix time in seconds
- Event string `json:"event"` // One of the above
- Topic string `json:"topic"`
- Priority int `json:"priority,omitempty"`
- Tags []string `json:"tags,omitempty"`
- Title string `json:"title,omitempty"`
- Message string `json:"message,omitempty"`
- }
- // messageEncoder is a function that knows how to encode a message
- type messageEncoder func(msg *message) (string, error)
- // newMessage creates a new message with the current timestamp
- func newMessage(event, topic, msg string) *message {
- return &message{
- ID: util.RandomString(messageIDLength),
- Time: time.Now().Unix(),
- Event: event,
- Topic: topic,
- Priority: 0,
- Tags: nil,
- Title: "",
- Message: msg,
- }
- }
- // newOpenMessage is a convenience method to create an open message
- func newOpenMessage(topic string) *message {
- return newMessage(openEvent, topic, "")
- }
- // newKeepaliveMessage is a convenience method to create a keepalive message
- func newKeepaliveMessage(topic string) *message {
- return newMessage(keepaliveEvent, topic, "")
- }
- // newDefaultMessage is a convenience method to create a notification message
- func newDefaultMessage(topic, msg string) *message {
- return newMessage(messageEvent, topic, msg)
- }
|