You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

147 lines
4.2 KiB

package validations
import (
"fmt"
"github.com/aldinokemal/go-whatsapp-web-multidevice/config"
domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send"
pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error"
"github.com/dustin/go-humanize"
validation "github.com/go-ozzo/ozzo-validation/v4"
"github.com/go-ozzo/ozzo-validation/v4/is"
)
func ValidateSendMessage(request domainSend.MessageRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.Message, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
return nil
}
func ValidateSendImage(request domainSend.ImageRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.Image, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
availableMimes := map[string]bool{
"image/jpeg": true,
"image/jpg": true,
"image/png": true,
}
if !availableMimes[request.Image.Header.Get("Content-Type")] {
return pkgError.ValidationError("your image is not allowed. please use jpg/jpeg/png")
}
return nil
}
func ValidateSendFile(request domainSend.FileRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.File, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
if request.File.Size > config.WhatsappSettingMaxFileSize { // 10MB
maxSizeString := humanize.Bytes(uint64(config.WhatsappSettingMaxFileSize))
return pkgError.ValidationError(fmt.Sprintf("max file upload is %s, please upload in cloud and send via text if your file is higher than %s", maxSizeString, maxSizeString))
}
return nil
}
func ValidateSendVideo(request domainSend.VideoRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.Video, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
availableMimes := map[string]bool{
"video/mp4": true,
"video/x-matroska": true,
"video/avi": true,
}
if !availableMimes[request.Video.Header.Get("Content-Type")] {
return pkgError.ValidationError("your video type is not allowed. please use mp4/mkv/avi")
}
if request.Video.Size > config.WhatsappSettingMaxVideoSize { // 30MB
maxSizeString := humanize.Bytes(uint64(config.WhatsappSettingMaxVideoSize))
return pkgError.ValidationError(fmt.Sprintf("max video upload is %s, please upload in cloud and send via text if your file is higher than %s", maxSizeString, maxSizeString))
}
return nil
}
func ValidateSendContact(request domainSend.ContactRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.ContactPhone, validation.Required),
validation.Field(&request.ContactName, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
return nil
}
func ValidateSendLink(request domainSend.LinkRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.Link, validation.Required, is.URL),
validation.Field(&request.Caption, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
return nil
}
func ValidateRevokeMessage(request domainSend.RevokeRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.MessageID, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
return nil
}
func ValidateUpdateMessage(request domainSend.UpdateMessageRequest) error {
err := validation.ValidateStruct(&request,
validation.Field(&request.Phone, validation.Required),
validation.Field(&request.MessageID, validation.Required),
validation.Field(&request.Message, validation.Required),
)
if err != nil {
return pkgError.ValidationError(err.Error())
}
return nil
}