Added: message posting

This commit is contained in:
Aleksandr Soloshenko 2022-10-07 10:34:47 +07:00
parent 094c7f1181
commit ea5acc3b38
5 changed files with 28 additions and 5 deletions

2
go.mod
View File

@ -3,7 +3,7 @@ module bitbucket.org/capcom6/smsgatewaybackend
go 1.18
require (
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221006072847-aee2524b5192
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221007032455-694a304f5909
bitbucket.org/soft-c/gomicrobase v1.1.2-0.20221006080527-7eeddcd13770
github.com/go-playground/validator/v10 v10.11.0
github.com/gofiber/fiber/v2 v2.38.1

4
go.sum
View File

@ -1,5 +1,5 @@
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221006072847-aee2524b5192 h1:Mmoyu4csqhWcxCQc0qhSyd9dIt1BCxJ1OYOZA4D/S2U=
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221006072847-aee2524b5192/go.mod h1:AlZzQ1xftfS8rWSwjwTj3/MPMFFfgfNCP3b7xLoEeKM=
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221007032455-694a304f5909 h1:SwG69J+r+YOkcHnOUYFmsdvRyeEnvMs2KHTf+4L+4f4=
bitbucket.org/soft-c/gohelpers v1.0.3-0.20221007032455-694a304f5909/go.mod h1:AlZzQ1xftfS8rWSwjwTj3/MPMFFfgfNCP3b7xLoEeKM=
bitbucket.org/soft-c/gomicrobase v1.1.2-0.20221006080527-7eeddcd13770 h1:IAEOe5Uv9+zQEaOuT8eHJPUfS64Nc0I9ufq7afFXKUk=
bitbucket.org/soft-c/gomicrobase v1.1.2-0.20221006080527-7eeddcd13770/go.mod h1:Pvv07ulIXfDG5us/ZG5Of7vvjY+tq3fkcrY/MmJUEiE=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=

View File

@ -3,6 +3,7 @@ package handlers
import (
"bitbucket.org/capcom6/smsgatewaybackend/internal/smsgateway/models"
"bitbucket.org/capcom6/smsgatewaybackend/internal/smsgateway/services"
"bitbucket.org/capcom6/smsgatewaybackend/pkg/smsgateway"
microbase "bitbucket.org/soft-c/gomicrobase"
"github.com/go-playground/validator/v10"
"github.com/gofiber/fiber/v2"
@ -17,7 +18,18 @@ type thirdPartyHandler struct {
}
func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error {
return fiber.ErrNotImplemented
req := smsgateway.Message{}
if err := h.BodyParserValidator(c, &req); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
}
if len(user.Devices) < 1 {
return fiber.NewError(fiber.StatusBadRequest, "Нет ни одного устройтсва в учетной записи")
}
device := user.Devices[0]
return h.messagesSvc.Enqeue(device.ID, req)
}
func (h *thirdPartyHandler) authorize(handler func(models.User, *fiber.Ctx) error) fiber.Handler {

View File

@ -1,9 +1,12 @@
package services
import (
"fmt"
"bitbucket.org/capcom6/smsgatewaybackend/internal/smsgateway/models"
"bitbucket.org/capcom6/smsgatewaybackend/internal/smsgateway/repositories"
"bitbucket.org/capcom6/smsgatewaybackend/pkg/smsgateway"
"bitbucket.org/soft-c/gohelpers/pkg/filters"
"github.com/jaevor/go-nanoid"
)
@ -44,6 +47,14 @@ func (s *MessagesService) UpdateState(deviceID string, message smsgateway.Messag
}
func (s *MessagesService) Enqeue(deviceID string, message smsgateway.Message) error {
for i, v := range message.PhoneNumbers {
phone, err := filters.FilterPhone(v, false)
if err != nil {
return fmt.Errorf("некорректный номер телефона в строке %d: %w", i+1, err)
}
message.PhoneNumbers[i] = phone
}
msg := models.Message{
DeviceID: deviceID,
ExtID: message.ID,

View File

@ -12,7 +12,7 @@ const (
type Message struct {
ID string `json:"id,omitempty" validate:"omitempty,max=36"`
Message string `json:"message" validate:"required,max=256"`
PhoneNumbers []string `json:"phoneNumbers" validate:"required,min=1,max=100"`
PhoneNumbers []string `json:"phoneNumbers" validate:"required,min=1,max=100,dive,required,min=10"`
}
type MessageState struct {