gonextcloud/groups_impl.go

96 lines
2.2 KiB
Go
Raw Normal View History

package gonextcloud
2018-07-09 10:53:53 +00:00
import (
"net/http"
req "github.com/levigross/grequests"
2018-07-09 10:53:53 +00:00
)
//groups contains all groups available actions
type groups struct {
c *client
}
//List lists the Nextcloud groups
func (g *groups) List() ([]string, error) {
res, err := g.c.baseRequest(http.MethodGet, routes.groups, nil)
2018-07-09 10:53:53 +00:00
if err != nil {
return nil, err
}
var r groupListResponse
2018-07-24 18:26:12 +00:00
res.JSON(&r)
return r.Ocs.Data.Groups, nil
2018-07-09 10:53:53 +00:00
}
//ListDetails lists the Nextcloud groups
func (g *groups) ListDetails(search string) ([]Group, error) {
2019-01-31 12:23:06 +00:00
ro := &req.RequestOptions{
Params: map[string]string{
"search": search,
},
}
res, err := g.c.baseRequest(http.MethodGet, routes.groups, ro, "details")
if err != nil {
return nil, err
}
var r groupListDetailsResponse
res.JSON(&r)
return r.Ocs.Data.Groups, nil
}
//users list the group's users
func (g *groups) Users(name string) ([]string, error) {
res, err := g.c.baseRequest(http.MethodGet, routes.groups, nil, name)
2018-07-09 10:53:53 +00:00
if err != nil {
return nil, err
}
var r userListResponse
2018-07-09 10:53:53 +00:00
res.JSON(&r)
return r.Ocs.Data.Users, nil
}
//Search return the list of groups matching the search string
func (g *groups) Search(search string) ([]string, error) {
ro := &req.RequestOptions{
Params: map[string]string{"search": search},
}
res, err := g.c.baseRequest(http.MethodGet, routes.groups, ro)
if err != nil {
return nil, err
}
var r groupListResponse
res.JSON(&r)
return r.Ocs.Data.Groups, nil
}
//Create creates a group
func (g *groups) Create(name string) error {
2018-07-09 10:53:53 +00:00
ro := &req.RequestOptions{
Data: map[string]string{
"groupid": name,
},
}
return g.baseRequest(http.MethodPost, ro)
2018-07-09 10:53:53 +00:00
}
//Delete deletes the group
func (g *groups) Delete(name string) error {
return g.baseRequest(http.MethodDelete, nil, name)
2018-07-09 10:53:53 +00:00
}
//SubAdminList lists the group's subadmins
func (g *groups) SubAdminList(name string) ([]string, error) {
res, err := g.c.baseRequest(http.MethodGet, routes.groups, nil, name, "subadmins")
2018-07-09 10:53:53 +00:00
if err != nil {
return nil, err
}
var r userListResponse
2018-07-09 10:53:53 +00:00
res.JSON(&r)
return r.Ocs.Data.Users, nil
}
func (g *groups) baseRequest(method string, ro *req.RequestOptions, subRoute ...string) error {
_, err := g.c.baseRequest(method, routes.groups, ro, subRoute...)
return err
2018-07-09 10:53:53 +00:00
}