tsk-62: Modify how the Response from event.MessageEventResponse is handled (#63)
Closes #62 Reviewed-on: phoenix/textsender-api#63 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
@@ -25,7 +25,8 @@ func InvalidJson(err error) string {
|
|||||||
func RespondWithJSON(w http.ResponseWriter, statusCode int, data interface{}) {
|
func RespondWithJSON(w http.ResponseWriter, statusCode int, data interface{}) {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
w.WriteHeader(statusCode)
|
w.WriteHeader(statusCode)
|
||||||
if err := json.NewEncoder(w).Encode(data); err != nil {
|
encoder := json.NewEncoder(w)
|
||||||
|
if err := encoder.Encode(data); err != nil {
|
||||||
log.Printf("Error encoding JSON: %v", err)
|
log.Printf("Error encoding JSON: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package handler
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -12,6 +11,7 @@ import (
|
|||||||
"git.kundeng.us/phoenix/swoosh/swoop/send"
|
"git.kundeng.us/phoenix/swoosh/swoop/send"
|
||||||
"git.kundeng.us/phoenix/textsender-models/tx0/contact"
|
"git.kundeng.us/phoenix/textsender-models/tx0/contact"
|
||||||
"git.kundeng.us/phoenix/textsender-models/tx0/message"
|
"git.kundeng.us/phoenix/textsender-models/tx0/message"
|
||||||
|
"git.kundeng.us/phoenix/textsender-models/tx0/message/event"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/app"
|
"git.kundeng.us/phoenix/textsender-api/internal/app"
|
||||||
@@ -39,7 +39,7 @@ type SendInstantMessageRequest struct {
|
|||||||
|
|
||||||
type SendInstantMessageResponse struct {
|
type SendInstantMessageResponse struct {
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Data []*message.MessageEventResponse `json:"data"`
|
Data []*event.MessageEventResponse `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sent godoc
|
// Sent godoc
|
||||||
@@ -93,11 +93,7 @@ func (s *SendInstantMessageHandler) Send(w http.ResponseWriter, r *http.Request)
|
|||||||
if s.App != nil {
|
if s.App != nil {
|
||||||
msgSender := send.MessageSender{Config: s.App.TwilioConfig}
|
msgSender := send.MessageSender{Config: s.App.TwilioConfig}
|
||||||
for _, c := range contacts {
|
for _, c := range contacts {
|
||||||
if twilioResp, err := msgSender.Send(*msg, *c, nil); err != nil {
|
if twilioResp, twilioRespObject, err := msgSender.Send(*msg, *c, nil); err != nil {
|
||||||
statusCode = http.StatusInternalServerError
|
|
||||||
resp.Message = err.Error()
|
|
||||||
} else {
|
|
||||||
if data, err := json.Marshal(twilioResp); err != nil {
|
|
||||||
statusCode = http.StatusInternalServerError
|
statusCode = http.StatusInternalServerError
|
||||||
resp.Message = err.Error()
|
resp.Message = err.Error()
|
||||||
} else {
|
} else {
|
||||||
@@ -106,13 +102,13 @@ func (s *SendInstantMessageHandler) Send(w http.ResponseWriter, r *http.Request)
|
|||||||
statusCode = http.StatusInternalServerError
|
statusCode = http.StatusInternalServerError
|
||||||
resp.Message = err.Error()
|
resp.Message = err.Error()
|
||||||
} else {
|
} else {
|
||||||
mer := message.MessageEventResponse{}
|
mer := event.MessageEventResponse{}
|
||||||
mer.Response = data
|
mer.Response = twilioRespObject
|
||||||
mer.UserId = req.UserId
|
mer.UserId = req.UserId
|
||||||
mer.Sent = parsedTime
|
mer.Sent = parsedTime
|
||||||
mer.Status = message.Message_Event_Response_Status_Instant
|
mer.Status = event.Message_Event_Response_Status_Instant
|
||||||
mer.ContactId = c.Id
|
mer.ContactId = c.Id
|
||||||
mer.MessageId = &msg.Id
|
mer.MessageId = msg.Id
|
||||||
if err := s.MERStore.Create(ctx, &mer); err != nil {
|
if err := s.MERStore.Create(ctx, &mer); err != nil {
|
||||||
statusCode = http.StatusInternalServerError
|
statusCode = http.StatusInternalServerError
|
||||||
resp.Message = err.Error()
|
resp.Message = err.Error()
|
||||||
@@ -124,7 +120,6 @@ func (s *SendInstantMessageHandler) Send(w http.ResponseWriter, r *http.Request)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
statusCode = http.StatusInternalServerError
|
statusCode = http.StatusInternalServerError
|
||||||
resp.Message = "Config not properly configured"
|
resp.Message = "Config not properly configured"
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ func (m *MessageHandler) AddMessage(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
var statusCode int
|
var statusCode int
|
||||||
var resp AddMessageResponse
|
var resp AddMessageResponse
|
||||||
newMessage := message.Message{Content: req.Content, UserId: req.UserId}
|
newMessage := message.Message{Content: req.Content, UserId: &req.UserId}
|
||||||
|
|
||||||
if isMessageValid(&newMessage) {
|
if isMessageValid(&newMessage) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
@@ -160,7 +160,7 @@ func (c *MessageHandler) GetMessage(w http.ResponseWriter, r *http.Request) {
|
|||||||
if messages, err := c.MessageStore.GetAllMessages(ctx); err == nil {
|
if messages, err := c.MessageStore.GetAllMessages(ctx); err == nil {
|
||||||
log.Println("Amount of messages:", len(messages))
|
log.Println("Amount of messages:", len(messages))
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
if msg.UserId == userId {
|
if *msg.UserId == userId {
|
||||||
resp.Data = append(resp.Data, *msg)
|
resp.Data = append(resp.Data, *msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-models/tx0/message"
|
"git.kundeng.us/phoenix/textsender-models/tx0/message/event"
|
||||||
"git.kundeng.us/phoenix/textsender-models/tx0/types"
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
|
||||||
"git.kundeng.us/phoenix/textsender-api/internal/app"
|
"git.kundeng.us/phoenix/textsender-api/internal/app"
|
||||||
@@ -25,7 +23,7 @@ func NewEventResponseHandler(apiApp *app.App, str store.MessageEventResponseStor
|
|||||||
|
|
||||||
type RecordEventRequest struct {
|
type RecordEventRequest struct {
|
||||||
ScheduledMessageEventId uuid.UUID `json:"scheduled_message_event_id"`
|
ScheduledMessageEventId uuid.UUID `json:"scheduled_message_event_id"`
|
||||||
Response types.JSONB `json:"response"`
|
Response map[string]any `json:"response"`
|
||||||
UserId uuid.UUID `json:"user_id"`
|
UserId uuid.UUID `json:"user_id"`
|
||||||
Sent *time.Time `json:"sent,omitempty"`
|
Sent *time.Time `json:"sent,omitempty"`
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
@@ -35,7 +33,7 @@ type RecordEventRequest struct {
|
|||||||
|
|
||||||
type RecordEventResponse struct {
|
type RecordEventResponse struct {
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Data []*message.MessageEventResponse `json:"data"`
|
Data []*event.MessageEventResponse `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EventResponseHandler) RecordResponse(w http.ResponseWriter, r *http.Request) {
|
func (e *EventResponseHandler) RecordResponse(w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -46,11 +44,9 @@ func (e *EventResponseHandler) RecordResponse(w http.ResponseWriter, r *http.Req
|
|||||||
defer r.Body.Close()
|
defer r.Body.Close()
|
||||||
|
|
||||||
var statusCode int
|
var statusCode int
|
||||||
var rp message.MessageEventResponse
|
var rp event.MessageEventResponse
|
||||||
var resp RecordEventResponse
|
var resp RecordEventResponse
|
||||||
|
|
||||||
defer RespondWithJSON(w, statusCode, &resp)
|
|
||||||
|
|
||||||
if req.Sent == nil {
|
if req.Sent == nil {
|
||||||
statusCode = http.StatusBadRequest
|
statusCode = http.StatusBadRequest
|
||||||
resp.Message = "Sent time is empty"
|
resp.Message = "Sent time is empty"
|
||||||
@@ -66,20 +62,19 @@ func (e *EventResponseHandler) RecordResponse(w http.ResponseWriter, r *http.Req
|
|||||||
} else {
|
} else {
|
||||||
log.Println("Starting process to record Message Event Response")
|
log.Println("Starting process to record Message Event Response")
|
||||||
rp.ScheduledMessageEventId = req.ScheduledMessageEventId
|
rp.ScheduledMessageEventId = req.ScheduledMessageEventId
|
||||||
fmt.Println(req.Response)
|
|
||||||
rp.Response = req.Response
|
rp.Response = req.Response
|
||||||
rp.UserId = req.UserId
|
rp.UserId = req.UserId
|
||||||
rp.Sent = *req.Sent
|
rp.Sent = *req.Sent
|
||||||
|
|
||||||
switch req.Status {
|
switch req.Status {
|
||||||
case message.Message_Event_Response_Status_Instant:
|
case event.Message_Event_Response_Status_Instant:
|
||||||
{
|
{
|
||||||
log.Println("Status:", req.Status)
|
log.Println("Status:", req.Status)
|
||||||
rp.Status = req.Status
|
rp.Status = req.Status
|
||||||
rp.MessageId = req.MessageId
|
rp.MessageId = req.MessageId
|
||||||
rp.ContactId = req.ContactId
|
rp.ContactId = req.ContactId
|
||||||
}
|
}
|
||||||
case message.Message_Event_Response_Status_Scheduled:
|
case event.Message_Event_Response_Status_Scheduled:
|
||||||
{
|
{
|
||||||
log.Println("Status:", req.Status)
|
log.Println("Status:", req.Status)
|
||||||
rp.Status = req.Status
|
rp.Status = req.Status
|
||||||
@@ -103,11 +98,13 @@ func (e *EventResponseHandler) RecordResponse(w http.ResponseWriter, r *http.Req
|
|||||||
resp.Data = append(resp.Data, &rp)
|
resp.Data = append(resp.Data, &rp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RespondWithJSON(w, statusCode, &resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetMessageEventResponseFetchedResponse struct {
|
type GetMessageEventResponseFetchedResponse struct {
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Data []*message.MessageEventResponse `json:"data"`
|
Data []*event.MessageEventResponse `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EventResponseHandler) Fetch(w http.ResponseWriter, r *http.Request) {
|
func (e *EventResponseHandler) Fetch(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
Reference in New Issue
Block a user