1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-29 13:49:28 +08:00
Aleksandar Novaković ea1993665d MF-483 - Enable channels and devices corresponding lists in backend (#520)
* Add list channels by thing id endpoint

Add list channels by thing id endpoint to things service. Add
pagination format and logic.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add fetch channels by thing endpoint

Add fetch channels by thing endpoint with pagination.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Update list endpoints to contain pagination

Update list endpoints to contain pagination metadata.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add tests for two new endpoints

Add tests for two new endpoints and update existing ones. Also,
remove connected field from channel response.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Fix tests for SDK

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add SDK methods for new endpoints

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Update swagger docs for things service

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add error handling to http tests

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Fix response body in http tests

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Remove unused responses from things service

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add test cases to things postgres tests

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add test cases for event sourcing

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
2019-01-08 11:53:24 +01:00

177 lines
2.8 KiB
Go

//
// Copyright (c) 2018
// Mainflux
//
// SPDX-License-Identifier: Apache-2.0
//
package http
import "github.com/mainflux/mainflux/things"
const maxLimitSize = 100
type apiReq interface {
validate() error
}
type identityReq struct {
key string
}
func (req identityReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
return nil
}
type addThingReq struct {
key string
Type string `json:"type"`
Name string `json:"name,omitempty"`
Metadata string `json:"metadata,omitempty"`
}
func (req addThingReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.Type == "" {
return things.ErrMalformedEntity
}
return nil
}
type updateThingReq struct {
key string
id string
Type string `json:"type"`
Name string `json:"name,omitempty"`
Metadata string `json:"metadata,omitempty"`
}
func (req updateThingReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.id == "" || req.Type == "" {
return things.ErrMalformedEntity
}
return nil
}
type createChannelReq struct {
key string
Name string `json:"name,omitempty"`
Metadata string `json:"metadata,omitempty"`
}
func (req createChannelReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
return nil
}
type updateChannelReq struct {
key string
id string
Name string `json:"name,omitempty"`
Metadata string `json:"metadata,omitempty"`
}
func (req updateChannelReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.id == "" {
return things.ErrMalformedEntity
}
return nil
}
type viewResourceReq struct {
key string
id string
}
func (req viewResourceReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.id == "" {
return things.ErrMalformedEntity
}
return nil
}
type listResourcesReq struct {
key string
offset uint64
limit uint64
}
func (req *listResourcesReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.limit == 0 || req.limit > maxLimitSize {
return things.ErrMalformedEntity
}
return nil
}
type listByConnectionReq struct {
key string
id string
offset uint64
limit uint64
}
func (req listByConnectionReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.id == "" {
return things.ErrMalformedEntity
}
if req.limit == 0 || req.limit > maxLimitSize {
return things.ErrMalformedEntity
}
return nil
}
type connectionReq struct {
key string
chanID string
thingID string
}
func (req connectionReq) validate() error {
if req.key == "" {
return things.ErrUnauthorizedAccess
}
if req.chanID == "" || req.thingID == "" {
return things.ErrMalformedEntity
}
return nil
}