Files
catapult/internal/service/scheduled_message_event.go
T
phoenixandphoenix c809815549 tsk-14: Record when message was sent (#16)
Closes #14

Reviewed-on: #16
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-12-01 21:24:05 +00:00

59 lines
1.3 KiB
Go

package service
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling"
"git.kundeng.us/phoenix/textsender-models/tx0/token"
"github.com/google/uuid"
"git.kundeng.us/phoenix/catapult/internal/app"
)
type ScheduledMessageEvent struct {
Application *app.App
Token *token.Login
}
type getScheduledMessageEventResponse struct {
Message string `json:"message"`
Data []*scheduling.ScheduledMessageEvent `json:"data"`
}
func (s *ScheduledMessageEvent) GetEvents(scheduledMessageId uuid.UUID) ([]*scheduling.ScheduledMessageEvent, error) {
params := url.Values{}
params.Add("scheduled_message_id", scheduledMessageId.String())
pm := params.Encode()
fullUrl := fmt.Sprintf("%s/api/v1/schedule/message/event?%s", s.Application.ApiUrl, pm)
req, err := http.NewRequest("GET", fullUrl, nil)
if err != nil {
return nil, err
}
token := s.Token.AccessToken
req.Header.Set("Authorization", "Bearer "+token)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var r getScheduledMessageEventResponse
err = json.NewDecoder(resp.Body).Decode(&r)
if err != nil {
return nil, err
} else {
if len(r.Data) == 0 {
return nil, nil
} else {
return r.Data, nil
}
}
}