From 63a223cd27c7c90c94f5d04f2ba2bb55b6437282 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 14 Nov 2025 16:34:44 -0500 Subject: [PATCH] Improved code --- swoop/send/sender.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/swoop/send/sender.go b/swoop/send/sender.go index 156cbd2..23b1418 100644 --- a/swoop/send/sender.go +++ b/swoop/send/sender.go @@ -1,18 +1,49 @@ package send import ( + "encoding/json" "fmt" + "time" + "git.kundeng.us/phoenix/textsender-models/pkg/config" "git.kundeng.us/phoenix/textsender-models/pkg/contact" + "git.kundeng.us/phoenix/textsender-models/pkg/message" + "github.com/twilio/twilio-go" + twilioApi "github.com/twilio/twilio-go/rest/api/v2010" ) +type TwilioResult = twilioApi.ApiV2010Message + type MessageSender struct { Numbers []contact.Contact + Config config.TwiloConfig } -func (m *MessageSender) Send() error { - if len(m.Numbers) == 0 { - return fmt.Errorf("No numbers to send") +func (m *MessageSender) Send(msg message.Message, number contact.Contact, time *time.Time) (*TwilioResult, error) { + now := time.Now() + client := twilio.NewRestClientWithParams(twilio.ClientParams{ + Username: Config.AccountSID, + Password: Config.AuthToken, + }) + + params := &twilioApi.CreateMessageParams{} + params.SetTo(number.PhoneNumber) + params.SetFrom(Config.Number) + params.SetBody(message.Content) + if time != nil { + if time > now { + params.SetSendAt(*time) + } + } + + resp, err := client.Api.CreateMessage(params) + if err != nil { + return nil, fmt.Errorf("Error sending message: %v", err) + } else { + if _, err := json.Marshal(*resp); err != nil { + return nil, fmt.Errorf("Error parsing result: %v", err) + } else { + return resp, nil + } } - return nil }