mirror of
https://gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud
synced 2024-11-06 03:36:25 +00:00
86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
package gonextcloud
|
|
|
|
import (
|
|
req "github.com/levigross/grequests"
|
|
"gitlab.adphi.fr/partitio/Nextcloud-Partitio/gonextcloud/types"
|
|
"net/http"
|
|
)
|
|
|
|
//GroupList lists the Nextcloud groups
|
|
func (c *Client) GroupList() ([]string, error) {
|
|
res, err := c.baseRequest(http.MethodGet, routes.groups, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var r types.GroupListResponse
|
|
res.JSON(&r)
|
|
return r.Ocs.Data.Groups, nil
|
|
}
|
|
|
|
//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
|
|
}
|
|
|
|
//GroupUsers list the group's users
|
|
func (c *Client) GroupUsers(name string) ([]string, error) {
|
|
res, err := c.baseRequest(http.MethodGet, routes.groups, nil, name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var r types.UserListResponse
|
|
res.JSON(&r)
|
|
return r.Ocs.Data.Users, nil
|
|
}
|
|
|
|
//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
|
|
}
|
|
|
|
//GroupCreate creates a group
|
|
func (c *Client) GroupCreate(name string) error {
|
|
ro := &req.RequestOptions{
|
|
Data: map[string]string{
|
|
"groupid": name,
|
|
},
|
|
}
|
|
return c.groupBaseRequest(http.MethodPost, ro)
|
|
}
|
|
|
|
//GroupDelete deletes the group
|
|
func (c *Client) GroupDelete(name string) error {
|
|
return c.groupBaseRequest(http.MethodDelete, nil, name)
|
|
}
|
|
|
|
//GroupSubAdminList lists the group's subadmins
|
|
func (c *Client) GroupSubAdminList(name string) ([]string, error) {
|
|
res, err := c.baseRequest(http.MethodGet, routes.groups, nil, name, "subadmins")
|
|
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
|
|
}
|