1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00

NOISSUE - Remove auth URL from SDK (#1511)

* Remove auth URL from SDK

Signed-off-by: Filip Bugarski <filipbugarski@gmail.com>

* Update CLi/main.go authURL to GroupsURL

Signed-off-by: Filip Bugarski <filipbugarski@gmail.com>

* Add authURL back

Signed-off-by: Filip Bugarski <filipbugarski@gmail.com>

* Refactor group structures

Signed-off-by: Filip Bugarski <filipbugarski@gmail.com>

* Add AuthURL back to cli/main.go

Signed-off-by: Filip Bugarski <filipbugarski@gmail.com>
This commit is contained in:
Filip Bugarski 2021-12-02 13:50:39 +01:00 committed by GitHub
parent 31d30b204d
commit 5112ef681a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 32 deletions

View File

@ -11,16 +11,14 @@ import (
"net/http"
"strings"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/pkg/errors"
)
const groupsEndpoint = "groups"
type assignRequest struct {
Type string `json:"type,omitempty"`
Members []string `json:"members"`
}
const (
groupsEndpoint = "groups"
MaxLevel = uint64(5)
MinLevel = uint64(1)
)
func (sdk mfSDK) CreateGroup(g Group, token string) (string, error) {
data, err := json.Marshal(g)
@ -128,75 +126,75 @@ func (sdk mfSDK) Unassign(token, groupID string, memberIDs ...string) error {
return nil
}
func (sdk mfSDK) Members(groupID, token string, offset, limit uint64) (auth.MemberPage, error) {
func (sdk mfSDK) Members(groupID, token string, offset, limit uint64) (MembersPage, error) {
url := fmt.Sprintf("%s, %s/%s/members?offset=%d&limit=%d&", sdk.authURL, groupsEndpoint, groupID, offset, limit)
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return auth.MemberPage{}, err
return MembersPage{}, err
}
resp, err := sdk.sendRequest(req, token, string(CTJSON))
if err != nil {
return auth.MemberPage{}, err
return MembersPage{}, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return auth.MemberPage{}, err
return MembersPage{}, err
}
if resp.StatusCode != http.StatusOK {
return auth.MemberPage{}, errors.Wrap(ErrFailedFetch, errors.New(resp.Status))
return MembersPage{}, errors.Wrap(ErrFailedFetch, errors.New(resp.Status))
}
var tp auth.MemberPage
var tp MembersPage
if err := json.Unmarshal(body, &tp); err != nil {
return auth.MemberPage{}, err
return MembersPage{}, err
}
return tp, nil
}
func (sdk mfSDK) Groups(offset, limit uint64, token string) (auth.GroupPage, error) {
func (sdk mfSDK) Groups(offset, limit uint64, token string) (GroupsPage, error) {
url := fmt.Sprintf("%s/%s?offset=%d&limit=%d&tree=false", sdk.authURL, groupsEndpoint, offset, limit)
return sdk.getGroups(token, url)
}
func (sdk mfSDK) Parents(id string, offset, limit uint64, token string) (auth.GroupPage, error) {
url := fmt.Sprintf("%s/%s/%s/parents?offset=%d&limit=%d&tree=false&level=%d", sdk.authURL, groupsEndpoint, id, offset, limit, auth.MaxLevel)
func (sdk mfSDK) Parents(id string, offset, limit uint64, token string) (GroupsPage, error) {
url := fmt.Sprintf("%s/%s/%s/parents?offset=%d&limit=%d&tree=false&level=%d", sdk.authURL, groupsEndpoint, id, offset, limit, MaxLevel)
return sdk.getGroups(token, url)
}
func (sdk mfSDK) Children(id string, offset, limit uint64, token string) (auth.GroupPage, error) {
url := fmt.Sprintf("%s/%s/%s/children?offset=%d&limit=%d&tree=false&level=%d", sdk.authURL, groupsEndpoint, id, offset, limit, auth.MaxLevel)
func (sdk mfSDK) Children(id string, offset, limit uint64, token string) (GroupsPage, error) {
url := fmt.Sprintf("%s/%s/%s/children?offset=%d&limit=%d&tree=false&level=%d", sdk.authURL, groupsEndpoint, id, offset, limit, MaxLevel)
return sdk.getGroups(token, url)
}
func (sdk mfSDK) getGroups(token, url string) (auth.GroupPage, error) {
func (sdk mfSDK) getGroups(token, url string) (GroupsPage, error) {
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return auth.GroupPage{}, err
return GroupsPage{}, err
}
resp, err := sdk.sendRequest(req, token, string(CTJSON))
if err != nil {
return auth.GroupPage{}, err
return GroupsPage{}, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return auth.GroupPage{}, err
return GroupsPage{}, err
}
if resp.StatusCode != http.StatusOK {
return auth.GroupPage{}, errors.Wrap(ErrFailedFetch, errors.New(resp.Status))
return GroupsPage{}, errors.Wrap(ErrFailedFetch, errors.New(resp.Status))
}
var tp auth.GroupPage
var tp GroupsPage
if err := json.Unmarshal(body, &tp); err != nil {
return auth.GroupPage{}, err
return GroupsPage{}, err
}
return tp, nil
}

View File

@ -3,6 +3,11 @@
package sdk
type assignRequest struct {
Type string `json:"type,omitempty"`
Members []string `json:"members"`
}
// UserPasswordReq contains old and new passwords
type UserPasswordReq struct {
OldPassword string `json:"old_password,omitempty"`

View File

@ -50,3 +50,8 @@ type UsersPage struct {
Users []User `json:"users"`
pageRes
}
type MembersPage struct {
Members []Member `json:"members"`
pageRes
}

View File

@ -7,8 +7,6 @@ import (
"crypto/tls"
"errors"
"net/http"
"github.com/mainflux/mainflux/auth"
)
const (
@ -111,6 +109,12 @@ type Channel struct {
Metadata map[string]interface{} `json:"metadata,omitempty"`
}
//Member represents mainflux member.
type Member struct {
ID string
Type string
}
// SDK contains Mainflux API.
type SDK interface {
// CreateUser registers mainflux user.
@ -157,13 +161,13 @@ type SDK interface {
DeleteGroup(id, token string) error
// Groups returns page of users groups.
Groups(offset, limit uint64, token string) (auth.GroupPage, error)
Groups(offset, limit uint64, token string) (GroupsPage, error)
// Parents returns page of users groups.
Parents(id string, offset, limit uint64, token string) (auth.GroupPage, error)
Parents(id string, offset, limit uint64, token string) (GroupsPage, error)
// Children returns page of users groups.
Children(id string, offset, limit uint64, token string) (auth.GroupPage, error)
Children(id string, offset, limit uint64, token string) (GroupsPage, error)
// Group returns users group object by id.
Group(id, token string) (Group, error)
@ -175,7 +179,7 @@ type SDK interface {
Unassign(token, groupID string, memberIDs ...string) error
// Members lists members of a group.
Members(groupID, token string, offset, limit uint64) (auth.MemberPage, error)
Members(groupID, token string, offset, limit uint64) (MembersPage, error)
// Memberships lists groups for user.
Memberships(userID, token string, offset, limit uint64) (GroupsPage, error)