Remove 'govalidator' package dependecy
This commit is contained in:
parent
d4aea0a436
commit
892d5d2a20
10
campaigns.go
10
campaigns.go
|
@ -13,8 +13,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/asaskevich/govalidator"
|
|
||||||
"github.com/gofrs/uuid"
|
"github.com/gofrs/uuid"
|
||||||
|
"github.com/knadh/listmonk/internal/subimporter"
|
||||||
"github.com/knadh/listmonk/models"
|
"github.com/knadh/listmonk/models"
|
||||||
"github.com/labstack/echo"
|
"github.com/labstack/echo"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
@ -574,19 +574,19 @@ func validateCampaignFields(c campaignReq, app *App) (campaignReq, error) {
|
||||||
if c.FromEmail == "" {
|
if c.FromEmail == "" {
|
||||||
c.FromEmail = app.constants.FromEmail
|
c.FromEmail = app.constants.FromEmail
|
||||||
} else if !regexFromAddress.Match([]byte(c.FromEmail)) {
|
} else if !regexFromAddress.Match([]byte(c.FromEmail)) {
|
||||||
if !govalidator.IsEmail(c.FromEmail) {
|
if !subimporter.IsEmail(c.FromEmail) {
|
||||||
return c, errors.New("invalid `from_email`")
|
return c, errors.New("invalid `from_email`")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !govalidator.IsByteLength(c.Name, 1, stdInputMaxLen) {
|
if !strHasLen(c.Name, 1, stdInputMaxLen) {
|
||||||
return c, errors.New("invalid length for `name`")
|
return c, errors.New("invalid length for `name`")
|
||||||
}
|
}
|
||||||
if !govalidator.IsByteLength(c.Subject, 1, stdInputMaxLen) {
|
if !strHasLen(c.Subject, 1, stdInputMaxLen) {
|
||||||
return c, errors.New("invalid length for `subject`")
|
return c, errors.New("invalid length for `subject`")
|
||||||
}
|
}
|
||||||
|
|
||||||
// if !govalidator.IsByteLength(c.Body, 1, bodyMaxLen) {
|
// if !hasLen(c.Body, 1, bodyMaxLen) {
|
||||||
// return c,errors.New("invalid length for `body`")
|
// return c,errors.New("invalid length for `body`")
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -1,7 +1,6 @@
|
||||||
module github.com/knadh/listmonk
|
module github.com/knadh/listmonk
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf
|
|
||||||
github.com/disintegration/imaging v1.5.0
|
github.com/disintegration/imaging v1.5.0
|
||||||
github.com/gofrs/uuid v3.2.0+incompatible
|
github.com/gofrs/uuid v3.2.0+incompatible
|
||||||
github.com/jinzhu/gorm v1.9.1
|
github.com/jinzhu/gorm v1.9.1
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -1,7 +1,5 @@
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco=
|
|
||||||
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
|
|
@ -18,10 +18,10 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/asaskevich/govalidator"
|
|
||||||
"github.com/gofrs/uuid"
|
"github.com/gofrs/uuid"
|
||||||
"github.com/knadh/listmonk/models"
|
"github.com/knadh/listmonk/models"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
@ -101,6 +101,9 @@ var (
|
||||||
csvHeaders = map[string]bool{"email": true,
|
csvHeaders = map[string]bool{"email": true,
|
||||||
"name": true,
|
"name": true,
|
||||||
"attributes": true}
|
"attributes": true}
|
||||||
|
|
||||||
|
// https://www.alexedwards.net/blog/validation-snippets-for-go#email-validation
|
||||||
|
regexEmail = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
|
||||||
)
|
)
|
||||||
|
|
||||||
// New returns a new instance of Importer.
|
// New returns a new instance of Importer.
|
||||||
|
@ -567,10 +570,10 @@ func ValidateFields(s SubReq) error {
|
||||||
if len(s.Email) > 1000 {
|
if len(s.Email) > 1000 {
|
||||||
return errors.New(`e-mail too long`)
|
return errors.New(`e-mail too long`)
|
||||||
}
|
}
|
||||||
if !govalidator.IsEmail(s.Email) {
|
if !IsEmail(s.Email) {
|
||||||
return errors.New(`invalid e-mail "` + s.Email + `"`)
|
return errors.New(`invalid e-mail "` + s.Email + `"`)
|
||||||
}
|
}
|
||||||
if !govalidator.IsByteLength(s.Name, 1, stdInputMaxLen) {
|
if len(s.Name) == 0 || len(s.Name) > stdInputMaxLen {
|
||||||
return errors.New(`invalid or empty name "` + s.Name + `"`)
|
return errors.New(`invalid or empty name "` + s.Name + `"`)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -599,3 +602,8 @@ func countLines(r io.Reader) (int, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsEmail checks whether the given string is a valid e-mail address.
|
||||||
|
func IsEmail(email string) bool {
|
||||||
|
return regexEmail.MatchString(email)
|
||||||
|
}
|
||||||
|
|
3
lists.go
3
lists.go
|
@ -9,7 +9,6 @@ import (
|
||||||
"github.com/knadh/listmonk/models"
|
"github.com/knadh/listmonk/models"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
|
||||||
"github.com/asaskevich/govalidator"
|
|
||||||
"github.com/labstack/echo"
|
"github.com/labstack/echo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -80,7 +79,7 @@ func handleCreateList(c echo.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate.
|
// Validate.
|
||||||
if !govalidator.IsByteLength(o.Name, 1, stdInputMaxLen) {
|
if !strHasLen(o.Name, 1, stdInputMaxLen) {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest,
|
return echo.NewHTTPError(http.StatusBadRequest,
|
||||||
"Invalid length for the name field.")
|
"Invalid length for the name field.")
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/asaskevich/govalidator"
|
|
||||||
"github.com/gofrs/uuid"
|
"github.com/gofrs/uuid"
|
||||||
"github.com/knadh/listmonk/internal/subimporter"
|
"github.com/knadh/listmonk/internal/subimporter"
|
||||||
"github.com/knadh/listmonk/models"
|
"github.com/knadh/listmonk/models"
|
||||||
|
@ -204,10 +203,10 @@ func handleUpdateSubscriber(c echo.Context) error {
|
||||||
if id < 1 {
|
if id < 1 {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "Invalid ID.")
|
return echo.NewHTTPError(http.StatusBadRequest, "Invalid ID.")
|
||||||
}
|
}
|
||||||
if req.Email != "" && !govalidator.IsEmail(req.Email) {
|
if req.Email != "" && !subimporter.IsEmail(req.Email) {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "Invalid `email`.")
|
return echo.NewHTTPError(http.StatusBadRequest, "Invalid `email`.")
|
||||||
}
|
}
|
||||||
if req.Name != "" && !govalidator.IsByteLength(req.Name, 1, stdInputMaxLen) {
|
if req.Name != "" && !strHasLen(req.Name, 1, stdInputMaxLen) {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "Invalid length for `name`.")
|
return echo.NewHTTPError(http.StatusBadRequest, "Invalid length for `name`.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/asaskevich/govalidator"
|
|
||||||
"github.com/knadh/listmonk/models"
|
"github.com/knadh/listmonk/models"
|
||||||
"github.com/labstack/echo"
|
"github.com/labstack/echo"
|
||||||
)
|
)
|
||||||
|
@ -241,7 +240,7 @@ func handleDeleteTemplate(c echo.Context) error {
|
||||||
|
|
||||||
// validateTemplate validates template fields.
|
// validateTemplate validates template fields.
|
||||||
func validateTemplate(o models.Template) error {
|
func validateTemplate(o models.Template) error {
|
||||||
if !govalidator.IsByteLength(o.Name, 1, stdInputMaxLen) {
|
if !strHasLen(o.Name, 1, stdInputMaxLen) {
|
||||||
return errors.New("invalid length for `name`")
|
return errors.New("invalid length for `name`")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
5
utils.go
5
utils.go
|
@ -127,3 +127,8 @@ func generateRandomString(n int) (string, error) {
|
||||||
|
|
||||||
return string(bytes), nil
|
return string(bytes), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// strHasLen checks if the given string has a length within min-max.
|
||||||
|
func strHasLen(str string, min, max int) bool {
|
||||||
|
return len(str) >= min && len(str) <= max
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue