client/role.go (133 lines of code) (raw):

package client import ( "bytes" "encoding/json" "fmt" "net/http" ) type Role struct { Name *string `json:"name,omitempty"` Id *string `json:"id,omitempty"` Included *Included `json:"included,omitempty"` Permissions *Permissions `json:"permissions,omitempty"` } type Included struct { Role []Role `json:"role"` } type Permissions struct { Permission []Permission `json:"permission"` } type Permission struct { Id string `json:"id"` } func (c *Client) NewRole(role Role) (Role, error) { body, err := json.Marshal(role) if err != nil { return Role{}, err } req, err := http.NewRequest("POST", fmt.Sprintf("%s/roles", c.RestURL), bytes.NewReader(body)) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil } func (c *Client) GetRole(id string) (Role, error) { req, err := http.NewRequest("GET", fmt.Sprintf("%s/roles/id:%s", c.RestURL, id), nil) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil } func (c *Client) DeleteRole(id string) error { req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/roles/id:%s", c.RestURL, id), nil) if err != nil { return err } _, err = c.doRequest(req) if err != nil { return err } return nil } func (c *Client) AddIncludedRole(roleId, includedId string) (Role, error) { req, err := http.NewRequest("PUT", fmt.Sprintf("%s/roles/id:%s/included/%s", c.RestURL, roleId, includedId), nil) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil } func (c *Client) RemoveIncludedRole(roleId, includedId string) (Role, error) { req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/roles/id:%s/included/%s", c.RestURL, roleId, includedId), nil) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil } func (c *Client) AddPermission(roleId, permId string) (Role, error) { req, err := http.NewRequest("PUT", fmt.Sprintf("%s/roles/id:%s/permissions/%s", c.RestURL, roleId, permId), nil) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil } func (c *Client) RemovePermission(roleId, permId string) (Role, error) { req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/roles/id:%s/permissions/%s", c.RestURL, roleId, permId), nil) if err != nil { return Role{}, err } result, err := c.doRequest(req) if err != nil { return Role{}, err } actual := Role{} err = json.Unmarshal(result, &actual) if err != nil { return Role{}, err } return actual, nil }