mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
Added: message status response
This commit is contained in:
parent
4e93f67828
commit
38ff76cdaf
@ -1,4 +1,4 @@
|
||||
@baseUrl=http://sms.capcom.me
|
||||
@baseUrl=http://localhost:3000
|
||||
|
||||
###
|
||||
POST {{baseUrl}}/api/mobile/v1/device HTTP/1.1
|
||||
|
||||
@ -47,7 +47,10 @@
|
||||
],
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Сообщение поставлено в очередь"
|
||||
"description": "Сообщение поставлено в очередь",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/smsgateway.MessageState"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Некорректный запрос",
|
||||
|
||||
@ -162,6 +162,8 @@ paths:
|
||||
responses:
|
||||
"201":
|
||||
description: Сообщение поставлено в очередь
|
||||
schema:
|
||||
$ref: '#/definitions/smsgateway.MessageState'
|
||||
"400":
|
||||
description: Некорректный запрос
|
||||
schema:
|
||||
|
||||
@ -26,7 +26,7 @@ type thirdPartyHandler struct {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param request body smsgateway.Message true "Сообщение"
|
||||
// @Success 201 {object} nil "Сообщение поставлено в очередь"
|
||||
// @Success 201 {object} smsgateway.MessageState "Сообщение поставлено в очередь"
|
||||
// @Failure 401 {object} smsgateway.ErrorResponse "Ошибка авторизации"
|
||||
// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос"
|
||||
// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера"
|
||||
@ -42,7 +42,8 @@ func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
device := user.Devices[0]
|
||||
if err := h.messagesSvc.Enqeue(device, req); err != nil {
|
||||
state, err := h.messagesSvc.Enqeue(device, req)
|
||||
if err != nil {
|
||||
if errors.Is(err, services.ErrValidation) {
|
||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||
}
|
||||
@ -50,7 +51,7 @@ func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.SendStatus(fiber.StatusCreated)
|
||||
return c.Status(fiber.StatusCreated).JSON(state)
|
||||
}
|
||||
|
||||
func (h *thirdPartyHandler) authorize(handler func(models.User, *fiber.Ctx) error) fiber.Handler {
|
||||
|
||||
@ -63,13 +63,24 @@ func (s *MessagesService) UpdateState(deviceID string, message smsgateway.Messag
|
||||
return s.Messages.UpdateState(&existing)
|
||||
}
|
||||
|
||||
func (s *MessagesService) Enqeue(device models.Device, message smsgateway.Message) error {
|
||||
func (s *MessagesService) Enqeue(device models.Device, message smsgateway.Message) (smsgateway.MessageState, error) {
|
||||
state := smsgateway.MessageState{
|
||||
ID: "",
|
||||
State: smsgateway.MessageStatePending,
|
||||
Recipients: make([]smsgateway.RecipientState, len(message.PhoneNumbers)),
|
||||
}
|
||||
|
||||
for i, v := range message.PhoneNumbers {
|
||||
phone, err := filters.FilterPhone(v, false)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid phone number in row %d: %w", i+1, err)
|
||||
return state, fmt.Errorf("invalid phone number in row %d: %w", i+1, err)
|
||||
}
|
||||
message.PhoneNumbers[i] = phone
|
||||
|
||||
state.Recipients[i] = smsgateway.RecipientState{
|
||||
PhoneNumber: phone,
|
||||
State: smsgateway.MessageStatePending,
|
||||
}
|
||||
}
|
||||
|
||||
msg := models.Message{
|
||||
@ -81,13 +92,14 @@ func (s *MessagesService) Enqeue(device models.Device, message smsgateway.Messag
|
||||
if msg.ExtID == "" {
|
||||
msg.ExtID = s.idgen()
|
||||
}
|
||||
state.ID = msg.ExtID
|
||||
|
||||
if err := s.Messages.Insert(&msg); err != nil {
|
||||
return err
|
||||
return state, err
|
||||
}
|
||||
|
||||
if device.PushToken == nil {
|
||||
return nil
|
||||
return state, nil
|
||||
}
|
||||
|
||||
go func(token string) {
|
||||
@ -99,7 +111,7 @@ func (s *MessagesService) Enqeue(device models.Device, message smsgateway.Messag
|
||||
}
|
||||
}(*device.PushToken)
|
||||
|
||||
return nil
|
||||
return state, nil
|
||||
}
|
||||
|
||||
func (s *MessagesService) recipientsToDomain(input []models.MessageRecipient) []string {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user