Browse Source

feat: move validation to service layer

pull/41/head
Aldino Kemal 3 years ago
parent
commit
29435b8897
  1. 29
      src/internal/rest/send.go
  2. 7
      src/internal/rest/user.go
  3. 33
      src/services/send.go
  4. 9
      src/services/user.go

29
src/internal/rest/send.go

@ -4,7 +4,6 @@ import (
domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send" domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/aldinokemal/go-whatsapp-web-multidevice/validations"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -30,10 +29,7 @@ func (controller *Send) SendText(c *fiber.Ctx) error {
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
// add validation send message
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendMessage(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendText(c.UserContext(), request) response, err := controller.Service.SendText(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -56,11 +52,7 @@ func (controller *Send) SendImage(c *fiber.Ctx) error {
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
request.Image = file request.Image = file
//add validation send image
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendImage(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendImage(c.UserContext(), request) response, err := controller.Service.SendImage(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -81,11 +73,7 @@ func (controller *Send) SendFile(c *fiber.Ctx) error {
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
request.File = file request.File = file
//add validation send image
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendFile(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendFile(c.UserContext(), request) response, err := controller.Service.SendFile(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -106,11 +94,7 @@ func (controller *Send) SendVideo(c *fiber.Ctx) error {
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
request.Video = video request.Video = video
//add validation send image
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendVideo(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendVideo(c.UserContext(), request) response, err := controller.Service.SendVideo(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -127,10 +111,7 @@ func (controller *Send) SendContact(c *fiber.Ctx) error {
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
// add validation send contect
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendContact(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendContact(c.UserContext(), request) response, err := controller.Service.SendContact(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -148,8 +129,6 @@ func (controller *Send) SendLink(c *fiber.Ctx) error {
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateSendLink(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.SendLink(c.UserContext(), request) response, err := controller.Service.SendLink(c.UserContext(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -165,10 +144,8 @@ func (controller *Send) RevokeMessage(c *fiber.Ctx) error {
var request domainSend.RevokeRequest var request domainSend.RevokeRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
request.MessageID = c.Params("message_id")
err = validations.ValidateRevokeMessage(request)
utils.PanicIfNeeded(err)
request.MessageID = c.Params("message_id")
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
response, err := controller.Service.Revoke(c.UserContext(), request) response, err := controller.Service.Revoke(c.UserContext(), request)
@ -185,10 +162,8 @@ func (controller *Send) UpdateMessage(c *fiber.Ctx) error {
var request domainSend.UpdateMessageRequest var request domainSend.UpdateMessageRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
request.MessageID = c.Params("message_id")
err = validations.ValidateUpdateMessage(request)
utils.PanicIfNeeded(err)
request.MessageID = c.Params("message_id")
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
response, err := controller.Service.UpdateMessage(c.UserContext(), request) response, err := controller.Service.UpdateMessage(c.UserContext(), request)

7
src/internal/rest/user.go

@ -4,7 +4,6 @@ import (
domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user" domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/aldinokemal/go-whatsapp-web-multidevice/validations"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -34,10 +33,7 @@ func (controller *User) UserInfo(c *fiber.Ctx) error {
err := c.QueryParser(&request) err := c.QueryParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
// add validation send message
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateUserInfo(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.Info(c.Context(), request) response, err := controller.Service.Info(c.Context(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -54,10 +50,7 @@ func (controller *User) UserAvatar(c *fiber.Ctx) error {
err := c.QueryParser(&request) err := c.QueryParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
// add validation send message
whatsapp.SanitizePhone(&request.Phone) whatsapp.SanitizePhone(&request.Phone)
err = validations.ValidateUserAvatar(request)
utils.PanicIfNeeded(err)
response, err := controller.Service.Avatar(c.Context(), request) response, err := controller.Service.Avatar(c.Context(), request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)

33
src/services/send.go

@ -8,6 +8,7 @@ import (
pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error" pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/aldinokemal/go-whatsapp-web-multidevice/validations"
fiberUtils "github.com/gofiber/fiber/v2/utils" fiberUtils "github.com/gofiber/fiber/v2/utils"
"github.com/h2non/bimg" "github.com/h2non/bimg"
"github.com/valyala/fasthttp" "github.com/valyala/fasthttp"
@ -31,6 +32,10 @@ func NewSendService(waCli *whatsmeow.Client) domainSend.ISendService {
} }
func (service serviceSend) SendText(ctx context.Context, request domainSend.MessageRequest) (response domainSend.MessageResponse, err error) { func (service serviceSend) SendText(ctx context.Context, request domainSend.MessageRequest) (response domainSend.MessageResponse, err error) {
err = validations.ValidateSendMessage(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -49,6 +54,10 @@ func (service serviceSend) SendText(ctx context.Context, request domainSend.Mess
} }
func (service serviceSend) SendImage(ctx context.Context, request domainSend.ImageRequest) (response domainSend.ImageResponse, err error) { func (service serviceSend) SendImage(ctx context.Context, request domainSend.ImageRequest) (response domainSend.ImageResponse, err error) {
err = validations.ValidateSendImage(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -143,6 +152,10 @@ func (service serviceSend) SendImage(ctx context.Context, request domainSend.Ima
} }
func (service serviceSend) SendFile(ctx context.Context, request domainSend.FileRequest) (response domainSend.FileResponse, err error) { func (service serviceSend) SendFile(ctx context.Context, request domainSend.FileRequest) (response domainSend.FileResponse, err error) {
err = validations.ValidateSendFile(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -194,6 +207,10 @@ func (service serviceSend) SendFile(ctx context.Context, request domainSend.File
} }
func (service serviceSend) SendVideo(ctx context.Context, request domainSend.VideoRequest) (response domainSend.VideoResponse, err error) { func (service serviceSend) SendVideo(ctx context.Context, request domainSend.VideoRequest) (response domainSend.VideoResponse, err error) {
err = validations.ValidateSendVideo(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -297,6 +314,10 @@ func (service serviceSend) SendVideo(ctx context.Context, request domainSend.Vid
} }
func (service serviceSend) SendContact(ctx context.Context, request domainSend.ContactRequest) (response domainSend.ContactResponse, err error) { func (service serviceSend) SendContact(ctx context.Context, request domainSend.ContactRequest) (response domainSend.ContactResponse, err error) {
err = validations.ValidateSendContact(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -320,6 +341,10 @@ func (service serviceSend) SendContact(ctx context.Context, request domainSend.C
} }
func (service serviceSend) SendLink(ctx context.Context, request domainSend.LinkRequest) (response domainSend.LinkResponse, err error) { func (service serviceSend) SendLink(ctx context.Context, request domainSend.LinkRequest) (response domainSend.LinkResponse, err error) {
err = validations.ValidateSendLink(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -348,6 +373,10 @@ func (service serviceSend) SendLink(ctx context.Context, request domainSend.Link
} }
func (service serviceSend) Revoke(_ context.Context, request domainSend.RevokeRequest) (response domainSend.RevokeResponse, err error) { func (service serviceSend) Revoke(_ context.Context, request domainSend.RevokeRequest) (response domainSend.RevokeResponse, err error) {
err = validations.ValidateRevokeMessage(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err
@ -365,6 +394,10 @@ func (service serviceSend) Revoke(_ context.Context, request domainSend.RevokeRe
} }
func (service serviceSend) UpdateMessage(ctx context.Context, request domainSend.UpdateMessageRequest) (response domainSend.UpdateMessageResponse, err error) { func (service serviceSend) UpdateMessage(ctx context.Context, request domainSend.UpdateMessageRequest) (response domainSend.UpdateMessageResponse, err error) {
err = validations.ValidateUpdateMessage(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err

9
src/services/user.go

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user" domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/aldinokemal/go-whatsapp-web-multidevice/validations"
"go.mau.fi/whatsmeow" "go.mau.fi/whatsmeow"
"go.mau.fi/whatsmeow/types" "go.mau.fi/whatsmeow/types"
) )
@ -21,6 +22,10 @@ func NewUserService(waCli *whatsmeow.Client) domainUser.IUserService {
} }
func (service userService) Info(_ context.Context, request domainUser.InfoRequest) (response domainUser.InfoResponse, err error) { func (service userService) Info(_ context.Context, request domainUser.InfoRequest) (response domainUser.InfoResponse, err error) {
err = validations.ValidateUserInfo(request)
if err != nil {
return response, err
}
var jids []types.JID var jids []types.JID
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
@ -60,6 +65,10 @@ func (service userService) Info(_ context.Context, request domainUser.InfoReques
} }
func (service userService) Avatar(_ context.Context, request domainUser.AvatarRequest) (response domainUser.AvatarResponse, err error) { func (service userService) Avatar(_ context.Context, request domainUser.AvatarRequest) (response domainUser.AvatarResponse, err error) {
err = validations.ValidateUserAvatar(request)
if err != nil {
return response, err
}
dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone) dataWaRecipient, err := whatsapp.ValidateJidWithLogin(service.WaCli, request.Phone)
if err != nil { if err != nil {
return response, err return response, err

Loading…
Cancel
Save