From 2984a715b830410b6d6ce2a8aaa1fc8a2388ee99 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 5 Jan 2025 15:16:26 -0800 Subject: add ntfy integration --- adapters/messaging/messaging.go | 60 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) (limited to 'adapters/messaging/messaging.go') diff --git a/adapters/messaging/messaging.go b/adapters/messaging/messaging.go index 607258a..f802503 100644 --- a/adapters/messaging/messaging.go +++ b/adapters/messaging/messaging.go @@ -1,5 +1,61 @@ package messaging -type MessagingAdapter interface { - SendMessage(message string) (string, error) +import ( + "fmt" + "log" + "strings" + "time" +) + +type Message struct { + FrenName string + Message string +} + +func (m *Message) Encode() string { + return m.FrenName + " " + m.Message +} + +func Decode(message string) (*Message, error) { + content := strings.SplitN(message, " ", 2) + if len(content) < 2 { + return nil, fmt.Errorf("no space delimiter") + } + return &Message{ + FrenName: content[0], + Message: content[1], + }, nil +} + +func IdContinuation(message Message) ContinuationChain { + return func(success Continuation, _failure Continuation) ContinuationChain { + return success(message) + } } + +func FailurePassingContinuation(message Message) ContinuationChain { + return func(_success Continuation, failure Continuation) ContinuationChain { + return failure(message) + } +} + +func LogContinuation(message Message) ContinuationChain { + return func(success Continuation, _failure Continuation) ContinuationChain { + now := time.Now().UTC() + + log.Println(now, message) + return success(message) + } +} + +// basically b(a(message)) if and only if b is successful +func Compose(a Continuation, b Continuation) Continuation { + return func(message Message) ContinuationChain { + return func(success Continuation, failure Continuation) ContinuationChain { + return b(message)(a, FailurePassingContinuation)(success, failure) + } + } +} + +type Continuation func(Message) ContinuationChain +type ContinuationChain func(Continuation, Continuation) ContinuationChain -- cgit v1.2.3-70-g09d2