mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-24 13:48:49 +08:00
NOISSUE: Fix: SDK ListGroupUsers
function (#1936)
* fix: SDK function Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: listing of clients response Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: SDK functions Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: Listing of group parents and children Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: SDK functions Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: users and things response Signed-off-by: Arvindh <arvindh91@gmail.com> --------- Signed-off-by: Arvindh <arvindh91@gmail.com>
This commit is contained in:
parent
34f293220c
commit
4ae0feced4
@ -87,15 +87,19 @@ func DecodeListParentsRequest(_ context.Context, r *http.Request) (interface{},
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
permission, err := apiutil.ReadStringQuery(r, api.PermissionKey, api.DefPermission)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
req := listGroupsReq{
|
||||
token: apiutil.ExtractBearerToken(r),
|
||||
tree: tree,
|
||||
Page: mfgroups.Page{
|
||||
Level: level,
|
||||
ID: chi.URLParam(r, "groupID"),
|
||||
PageMeta: pm,
|
||||
Direction: 1,
|
||||
Level: level,
|
||||
ID: chi.URLParam(r, "groupID"),
|
||||
Permission: permission,
|
||||
PageMeta: pm,
|
||||
Direction: +1,
|
||||
},
|
||||
}
|
||||
return req, nil
|
||||
@ -116,15 +120,19 @@ func DecodeListChildrenRequest(_ context.Context, r *http.Request) (interface{},
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
permission, err := apiutil.ReadStringQuery(r, api.PermissionKey, api.DefPermission)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
req := listGroupsReq{
|
||||
token: apiutil.ExtractBearerToken(r),
|
||||
tree: tree,
|
||||
Page: mfgroups.Page{
|
||||
Level: level,
|
||||
ID: chi.URLParam(r, "groupID"),
|
||||
PageMeta: pm,
|
||||
Direction: -1,
|
||||
Level: level,
|
||||
ID: chi.URLParam(r, "groupID"),
|
||||
Permission: permission,
|
||||
PageMeta: pm,
|
||||
Direction: -1,
|
||||
},
|
||||
}
|
||||
return req, nil
|
||||
|
@ -190,7 +190,9 @@ func (repo ClientRepository) RetrieveAll(ctx context.Context, pm clients.Page) (
|
||||
|
||||
func (repo ClientRepository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) {
|
||||
if len(pm.IDs) <= 0 {
|
||||
return clients.ClientsPage{}, errors.ErrNotFound
|
||||
return clients.ClientsPage{
|
||||
Page: clients.Page{Total: pm.Total, Offset: pm.Offset, Limit: pm.Limit},
|
||||
}, nil
|
||||
}
|
||||
query, err := pageQuery(pm)
|
||||
if err != nil {
|
||||
|
@ -59,7 +59,7 @@ type Page struct {
|
||||
Level uint64
|
||||
ID string
|
||||
Permission string
|
||||
Direction int64 // ancestors (-1) or descendants (+1)
|
||||
Direction int64 // ancestors (+1) or descendants (-1)
|
||||
Groups []Group
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ func (sdk mfSDK) AddUserToChannel(channelID string, req UsersRelationRequest, to
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.thingsURL, channelsEndpoint, channelID, usersEndpoint, assignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusCreated)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ func (sdk mfSDK) RemoveUserFromChannel(channelID string, req UsersRelationReques
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.thingsURL, channelsEndpoint, channelID, usersEndpoint, unassignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusNoContent)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
@ -195,7 +195,7 @@ func (sdk mfSDK) AddUserGroupToChannel(channelID string, req UserGroupsRequest,
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.thingsURL, channelsEndpoint, channelID, groupsEndpoint, assignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusCreated)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
@ -207,7 +207,7 @@ func (sdk mfSDK) RemoveUserGroupFromChannel(channelID string, req UserGroupsRequ
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.thingsURL, channelsEndpoint, channelID, groupsEndpoint, unassignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusNoContent)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
@ -236,7 +236,7 @@ func (sdk mfSDK) Connect(conn Connection, token string) errors.SDKError {
|
||||
|
||||
url := fmt.Sprintf("%s/%s", sdk.thingsURL, connectEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusCreated)
|
||||
|
||||
return sdkerr
|
||||
}
|
||||
@ -257,7 +257,7 @@ func (sdk mfSDK) Disconnect(connIDs Connection, token string) errors.SDKError {
|
||||
func (sdk mfSDK) ConnectThing(thingID, channelID, token string) errors.SDKError {
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s/%s", sdk.thingsURL, channelsEndpoint, channelID, thingsEndpoint, thingID, connectEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, nil, nil, http.StatusNoContent)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, nil, nil, http.StatusCreated)
|
||||
|
||||
return sdkerr
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ func (sdk mfSDK) AddUserToGroup(groupID string, req UsersRelationRequest, token
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.usersURL, groupsEndpoint, groupID, usersEndpoint, assignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusCreated)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
@ -165,25 +165,25 @@ func (sdk mfSDK) RemoveUserFromGroup(groupID string, req UsersRelationRequest, t
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s/%s", sdk.usersURL, groupsEndpoint, groupID, usersEndpoint, unassignEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusNoContent)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
func (sdk mfSDK) ListGroupUsers(groupID string, pm PageMetadata, token string) (GroupsPage, errors.SDKError) {
|
||||
func (sdk mfSDK) ListGroupUsers(groupID string, pm PageMetadata, token string) (UsersPage, errors.SDKError) {
|
||||
url, err := sdk.withQueryParams(sdk.usersURL, fmt.Sprintf("%s/%s/%s", groupsEndpoint, groupID, usersEndpoint), pm)
|
||||
if err != nil {
|
||||
return GroupsPage{}, errors.NewSDKError(err)
|
||||
return UsersPage{}, errors.NewSDKError(err)
|
||||
}
|
||||
_, body, sdkerr := sdk.processRequest(http.MethodGet, url, token, nil, nil, http.StatusOK)
|
||||
if sdkerr != nil {
|
||||
return GroupsPage{}, sdkerr
|
||||
return UsersPage{}, sdkerr
|
||||
}
|
||||
gp := GroupsPage{}
|
||||
if err := json.Unmarshal(body, &gp); err != nil {
|
||||
return GroupsPage{}, errors.NewSDKError(err)
|
||||
up := UsersPage{}
|
||||
if err := json.Unmarshal(body, &up); err != nil {
|
||||
return UsersPage{}, errors.NewSDKError(err)
|
||||
}
|
||||
|
||||
return gp, nil
|
||||
return up, nil
|
||||
}
|
||||
|
||||
func (sdk mfSDK) ListGroupChannels(groupID string, pm PageMetadata, token string) (GroupsPage, errors.SDKError) {
|
||||
|
@ -562,7 +562,7 @@ type SDK interface {
|
||||
// }
|
||||
// groups, _ := sdk.ListGroupUsers("groupID", pm, "token")
|
||||
// fmt.Println(groups)
|
||||
ListGroupUsers(groupID string, pm PageMetadata, token string) (GroupsPage, errors.SDKError)
|
||||
ListGroupUsers(groupID string, pm PageMetadata, token string) (UsersPage, errors.SDKError)
|
||||
|
||||
// ListGroupChannels list all channels in the group id .
|
||||
//
|
||||
|
@ -262,7 +262,7 @@ func (sdk mfSDK) ShareThing(thingID string, req UsersRelationRequest, token stri
|
||||
return errors.NewSDKError(err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s", sdk.thingsURL, thingsEndpoint, thingID, unshareEndpoint)
|
||||
url := fmt.Sprintf("%s/%s/%s/%s", sdk.thingsURL, thingsEndpoint, thingID, shareEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
return sdkerr
|
||||
@ -274,14 +274,14 @@ func (sdk mfSDK) UnshareThing(thingID string, req UsersRelationRequest, token st
|
||||
return errors.NewSDKError(err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/%s/%s/%s", sdk.thingsURL, thingsEndpoint, thingID, shareEndpoint)
|
||||
url := fmt.Sprintf("%s/%s/%s/%s", sdk.thingsURL, thingsEndpoint, thingID, unshareEndpoint)
|
||||
|
||||
_, _, sdkerr := sdk.processRequest(http.MethodPost, url, token, data, nil, http.StatusOK)
|
||||
return sdkerr
|
||||
}
|
||||
|
||||
func (sdk mfSDK) ListThingUsers(thingID string, pm PageMetadata, token string) (UsersPage, errors.SDKError) {
|
||||
url, err := sdk.withQueryParams(sdk.thingsURL, fmt.Sprintf("%s/%s/%s", thingsEndpoint, thingID, usersEndpoint), pm)
|
||||
url, err := sdk.withQueryParams(sdk.usersURL, fmt.Sprintf("%s/%s/%s", thingsEndpoint, thingID, usersEndpoint), pm)
|
||||
if err != nil {
|
||||
return UsersPage{}, errors.NewSDKError(err)
|
||||
}
|
||||
|
@ -119,13 +119,13 @@ func listMembersEndpoint(svc things.Service) endpoint.Endpoint {
|
||||
if err := req.validate(); err != nil {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
// TODO : remove svc.ListMembers and all functions to svc.ListClients https://github.com/absmach/magistrala/issues/5
|
||||
page, err := svc.ListClientsByGroup(ctx, req.token, req.groupID, req.Page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buildMembersResponse(page), nil
|
||||
return buildClientsResponse(page), nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,17 +238,17 @@ func disableClientEndpoint(svc things.Service) endpoint.Endpoint {
|
||||
}
|
||||
}
|
||||
|
||||
func buildMembersResponse(cp mfclients.MembersPage) memberPageRes {
|
||||
res := memberPageRes{
|
||||
func buildClientsResponse(cp mfclients.MembersPage) clientsPageRes {
|
||||
res := clientsPageRes{
|
||||
pageRes: pageRes{
|
||||
Total: cp.Total,
|
||||
Offset: cp.Offset,
|
||||
Limit: cp.Limit,
|
||||
},
|
||||
Members: []viewMembersRes{},
|
||||
Clients: []viewClientRes{},
|
||||
}
|
||||
for _, c := range cp.Members {
|
||||
res.Members = append(res.Members, viewMembersRes{Client: c})
|
||||
res.Clients = append(res.Clients, viewClientRes{Client: c})
|
||||
}
|
||||
|
||||
return res
|
||||
|
@ -17,7 +17,6 @@ var (
|
||||
_ mainflux.Response = (*deleteClientRes)(nil)
|
||||
_ mainflux.Response = (*clientsPageRes)(nil)
|
||||
_ mainflux.Response = (*viewMembersRes)(nil)
|
||||
_ mainflux.Response = (*memberPageRes)(nil)
|
||||
_ mainflux.Response = (*assignUsersGroupsRes)(nil)
|
||||
_ mainflux.Response = (*unassignUsersGroupsRes)(nil)
|
||||
_ mainflux.Response = (*connectChannelThingRes)(nil)
|
||||
@ -122,23 +121,6 @@ func (res viewMembersRes) Empty() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type memberPageRes struct {
|
||||
pageRes
|
||||
Members []viewMembersRes `json:"things"`
|
||||
}
|
||||
|
||||
func (res memberPageRes) Code() int {
|
||||
return http.StatusOK
|
||||
}
|
||||
|
||||
func (res memberPageRes) Headers() map[string]string {
|
||||
return map[string]string{}
|
||||
}
|
||||
|
||||
func (res memberPageRes) Empty() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type deleteClientRes struct {
|
||||
mfclients.Client
|
||||
}
|
||||
|
@ -110,12 +110,13 @@ func listMembersByGroupEndpoint(svc users.Service) endpoint.Endpoint {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
// TODO : remove svc.ListMembers and all functions to svc.ListClients https://github.com/absmach/magistrala/issues/5
|
||||
page, err := svc.ListMembers(ctx, req.token, req.objectKind, req.objectID, req.Page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buildMembersResponse(page), nil
|
||||
return buildClientsResponse(page), nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,12 +129,13 @@ func listMembersByChannelEndpoint(svc users.Service) endpoint.Endpoint {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
// TODO : remove svc.ListMembers and all functions to svc.ListClients https://github.com/absmach/magistrala/issues/5
|
||||
page, err := svc.ListMembers(ctx, req.token, req.objectKind, req.objectID, req.Page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buildMembersResponse(page), nil
|
||||
return buildClientsResponse(page), nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,12 +147,13 @@ func listMembersByThingEndpoint(svc users.Service) endpoint.Endpoint {
|
||||
return nil, errors.Wrap(apiutil.ErrValidation, err)
|
||||
}
|
||||
|
||||
// TODO : remove svc.ListMembers and all functions to svc.ListClients https://github.com/absmach/magistrala/issues/5
|
||||
page, err := svc.ListMembers(ctx, req.token, req.objectKind, req.objectID, req.Page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buildMembersResponse(page), nil
|
||||
return buildClientsResponse(page), nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -362,18 +365,18 @@ func disableClientEndpoint(svc users.Service) endpoint.Endpoint {
|
||||
}
|
||||
}
|
||||
|
||||
func buildMembersResponse(cp mfclients.MembersPage) memberPageRes {
|
||||
res := memberPageRes{
|
||||
func buildClientsResponse(cp mfclients.MembersPage) clientsPageRes {
|
||||
res := clientsPageRes{
|
||||
pageRes: pageRes{
|
||||
Total: cp.Total,
|
||||
Offset: cp.Offset,
|
||||
Limit: cp.Limit,
|
||||
},
|
||||
Members: []viewMembersRes{},
|
||||
Clients: []viewClientRes{},
|
||||
}
|
||||
|
||||
for _, client := range cp.Members {
|
||||
res.Members = append(res.Members, viewMembersRes{Client: client})
|
||||
res.Clients = append(res.Clients, viewClientRes{Client: client})
|
||||
}
|
||||
|
||||
return res
|
||||
|
@ -21,7 +21,6 @@ var (
|
||||
_ mainflux.Response = (*deleteClientRes)(nil)
|
||||
_ mainflux.Response = (*clientsPageRes)(nil)
|
||||
_ mainflux.Response = (*viewMembersRes)(nil)
|
||||
_ mainflux.Response = (*memberPageRes)(nil)
|
||||
)
|
||||
|
||||
type pageRes struct {
|
||||
@ -140,22 +139,6 @@ func (res viewMembersRes) Empty() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type memberPageRes struct {
|
||||
pageRes
|
||||
Members []viewMembersRes `json:"members"`
|
||||
}
|
||||
|
||||
func (res memberPageRes) Code() int {
|
||||
return http.StatusOK
|
||||
}
|
||||
|
||||
func (res memberPageRes) Headers() map[string]string {
|
||||
return map[string]string{}
|
||||
}
|
||||
|
||||
func (res memberPageRes) Empty() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type deleteClientRes struct {
|
||||
mfclients.Client `json:",inline"`
|
||||
|
Loading…
x
Reference in New Issue
Block a user