gonextcloud/groups.go

86 lines
2.2 KiB
Go
Raw Normal View History

package gonextcloud
2018-07-09 10:53:53 +00:00
import (
req "github.com/levigross/grequests"
2018-10-08 16:50:11 +00:00
"gitlab.adphi.fr/partitio/Nextcloud-Partitio/gonextcloud/types"
2018-07-09 10:53:53 +00:00
"net/http"
)
2018-07-30 08:03:38 +00:00
//GroupList lists the Nextcloud groups
2018-07-09 10:53:53 +00:00
func (c *Client) GroupList() ([]string, error) {
res, err := c.baseRequest(http.MethodGet, routes.groups, nil)
2018-07-09 10:53:53 +00:00
if err != nil {
return nil, err
}
2018-07-24 18:26:12 +00:00
var r types.GroupListResponse
res.JSON(&r)
return r.Ocs.Data.Groups, nil
2018-07-09 10:53:53 +00:00
}
//GroupListDetails lists the Nextcloud groups
func (c *Client) GroupListDetails() ([]types.Group, error) {
res, err := c.baseRequest(http.MethodGet, routes.groups, nil, "details")
if err != nil {
return nil, err
}
var r types.GroupListDetailsResponse
res.JSON(&r)
return r.Ocs.Data.Groups, nil
}
2018-07-30 08:03:38 +00:00
//GroupUsers list the group's users
func (c *Client) GroupUsers(name string) ([]string, error) {
res, err := c.baseRequest(http.MethodGet, routes.groups, nil, name)
2018-07-09 10:53:53 +00:00
if err != nil {
return nil, err
}
var r types.UserListResponse
res.JSON(&r)
return r.Ocs.Data.Users, nil
}
2018-07-30 08:03:38 +00:00
//GroupSearch return the list of groups matching the search string
func (c *Client) GroupSearch(search string) ([]string, error) {
ro := &req.RequestOptions{
Params: map[string]string{"search": search},
}
res, err := c.baseRequest(http.MethodGet, routes.groups, ro)
if err != nil {
return nil, err
}
var r types.GroupListResponse
res.JSON(&r)
return r.Ocs.Data.Groups, nil
}
2018-07-30 08:03:38 +00:00
//GroupCreate creates a group
2018-07-09 10:53:53 +00:00
func (c *Client) GroupCreate(name string) error {
ro := &req.RequestOptions{
Data: map[string]string{
"groupid": name,
},
}
return c.groupBaseRequest(http.MethodPost, ro)
2018-07-09 10:53:53 +00:00
}
2018-07-30 08:03:38 +00:00
//GroupDelete deletes the group
2018-07-09 10:53:53 +00:00
func (c *Client) GroupDelete(name string) error {
return c.groupBaseRequest(http.MethodDelete, nil, name)
2018-07-09 10:53:53 +00:00
}
2018-07-30 08:03:38 +00:00
//GroupSubAdminList lists the group's subadmins
2018-07-09 10:53:53 +00:00
func (c *Client) GroupSubAdminList(name string) ([]string, error) {
res, err := 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 types.UserListResponse
res.JSON(&r)
return r.Ocs.Data.Users, nil
}
func (c *Client) groupBaseRequest(method string, ro *req.RequestOptions, subRoute ...string) error {
_, err := c.baseRequest(method, routes.groups, ro, subRoute...)
return err
2018-07-09 10:53:53 +00:00
}