mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-29 13:49:28 +08:00

All validation has been moved to the API resources layer, i.e. the domain objects provide validation method, but the service itself assumes no corrupted values are passed to it. Signed-off-by: Dejan Mijic <dejan@mainflux.com>
128 lines
1.9 KiB
Go
128 lines
1.9 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/asaskevich/govalidator"
|
|
"github.com/mainflux/mainflux/manager"
|
|
)
|
|
|
|
type apiReq interface {
|
|
validate() error
|
|
}
|
|
|
|
type userReq struct {
|
|
user manager.User
|
|
}
|
|
|
|
func (req userReq) validate() error {
|
|
return req.user.Validate()
|
|
}
|
|
|
|
type identityReq struct {
|
|
key string
|
|
}
|
|
|
|
func (req identityReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type addClientReq struct {
|
|
key string
|
|
client manager.Client
|
|
}
|
|
|
|
func (req addClientReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
return req.client.Validate()
|
|
}
|
|
|
|
type updateClientReq struct {
|
|
key string
|
|
id string
|
|
client manager.Client
|
|
}
|
|
|
|
func (req updateClientReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
if !govalidator.IsUUID(req.id) {
|
|
return manager.ErrNotFound
|
|
}
|
|
|
|
return req.client.Validate()
|
|
}
|
|
|
|
type createChannelReq struct {
|
|
key string
|
|
channel manager.Channel
|
|
}
|
|
|
|
func (req createChannelReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type updateChannelReq struct {
|
|
key string
|
|
id string
|
|
channel manager.Channel
|
|
}
|
|
|
|
func (req updateChannelReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
if !govalidator.IsUUID(req.id) {
|
|
return manager.ErrNotFound
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type viewResourceReq struct {
|
|
key string
|
|
id string
|
|
}
|
|
|
|
func (req viewResourceReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
if !govalidator.IsUUID(req.id) {
|
|
return manager.ErrNotFound
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type listResourcesReq struct {
|
|
key string
|
|
size int
|
|
offset int
|
|
}
|
|
|
|
func (req listResourcesReq) validate() error {
|
|
if req.key == "" {
|
|
return manager.ErrUnauthorizedAccess
|
|
}
|
|
|
|
if req.size > 0 && req.offset >= 0 {
|
|
return nil
|
|
}
|
|
|
|
return manager.ErrMalformedEntity
|
|
}
|