mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
75 lines
3.0 KiB
Go
75 lines
3.0 KiB
Go
package gerrit
|
|
|
|
// AccessService contains Access Right related REST endpoints
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html
|
|
type AccessService struct {
|
|
client *Client
|
|
}
|
|
|
|
// AccessSectionInfo describes the access rights that are assigned on a ref.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#access-section-info
|
|
type AccessSectionInfo struct {
|
|
Permissions map[string]PermissionInfo `json:"permissions"`
|
|
}
|
|
|
|
// PermissionInfo entity contains information about an assigned permission.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#permission-info
|
|
type PermissionInfo struct {
|
|
Label string `json:"label,omitempty"`
|
|
Exclusive bool `json:"exclusive"`
|
|
Rules map[string]PermissionRuleInfo `json:"rules"`
|
|
}
|
|
|
|
// PermissionRuleInfo entity contains information about a permission rule that is assigned to group.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#permission-rule-info
|
|
type PermissionRuleInfo struct {
|
|
// TODO Possible values for action: ALLOW, DENY or BLOCK, INTERACTIVE and BATCH
|
|
Action string `json:"action"`
|
|
Force bool `json:"force"`
|
|
Min int `json:"min"`
|
|
Max int `json:"max"`
|
|
}
|
|
|
|
// ProjectAccessInfo entity contains information about the access rights for a project.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#project-access-info
|
|
type ProjectAccessInfo struct {
|
|
Revision string `json:"revision"`
|
|
InheritsFrom ProjectInfo `json:"inherits_from"`
|
|
Local map[string]AccessSectionInfo `json:"local"`
|
|
IsOwner bool `json:"is_owner"`
|
|
OwnerOf []string `json:"owner_of"`
|
|
CanUpload bool `json:"can_upload"`
|
|
CanAdd bool `json:"can_add"`
|
|
ConfigVisible bool `json:"config_visible"`
|
|
}
|
|
|
|
// ListAccessRightsOptions specifies the parameters to the AccessService.ListAccessRights.
|
|
type ListAccessRightsOptions struct {
|
|
// The projects for which the access rights should be returned must be specified as project options.
|
|
// The project can be specified multiple times.
|
|
Project []string `url:"project,omitempty"`
|
|
}
|
|
|
|
// ListAccessRights lists the access rights for projects.
|
|
// As result a map is returned that maps the project name to ProjectAccessInfo entities.
|
|
// The entries in the map are sorted by project name.
|
|
//
|
|
// Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-access.html#list-access
|
|
func (s *AccessService) ListAccessRights(opt *ListAccessRightsOptions) (*map[string]ProjectAccessInfo, *Response, error) {
|
|
u := "access/"
|
|
|
|
u, err := addOptions(u, opt)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
v := new(map[string]ProjectAccessInfo)
|
|
resp, err := s.client.Call("GET", u, nil, v)
|
|
return v, resp, err
|
|
}
|