| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package cloudflare
- import (
- "encoding/json"
- "fmt"
- "github.com/pkg/errors"
- )
- // AccountRole defines the roles that a member can have attached.
- type AccountRole struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Description string `json:"description"`
- Permissions map[string]AccountRolePermission `json:"permissions"`
- }
- // AccountRolePermission is the shared structure for all permissions
- // that can be assigned to a member.
- type AccountRolePermission struct {
- Read bool `json:"read"`
- Edit bool `json:"edit"`
- }
- // AccountRolesListResponse represents the list response from the
- // account roles.
- type AccountRolesListResponse struct {
- Result []AccountRole `json:"result"`
- Response
- ResultInfo `json:"result_info"`
- }
- // AccountRoleDetailResponse is the API response, containing a single
- // account role.
- type AccountRoleDetailResponse struct {
- Success bool `json:"success"`
- Errors []string `json:"errors"`
- Messages []string `json:"messages"`
- Result AccountRole `json:"result"`
- }
- // AccountRoles returns all roles of an account.
- //
- // API reference: https://api.cloudflare.com/#account-roles-list-roles
- func (api *API) AccountRoles(accountID string) ([]AccountRole, error) {
- uri := "/accounts/" + accountID + "/roles"
- res, err := api.makeRequest("GET", uri, nil)
- if err != nil {
- return []AccountRole{}, errors.Wrap(err, errMakeRequestError)
- }
- var accountRolesListResponse AccountRolesListResponse
- err = json.Unmarshal(res, &accountRolesListResponse)
- if err != nil {
- return []AccountRole{}, errors.Wrap(err, errUnmarshalError)
- }
- return accountRolesListResponse.Result, nil
- }
- // AccountRole returns the details of a single account role.
- //
- // API reference: https://api.cloudflare.com/#account-roles-role-details
- func (api *API) AccountRole(accountID string, roleID string) (AccountRole, error) {
- uri := fmt.Sprintf("/accounts/%s/roles/%s", accountID, roleID)
- res, err := api.makeRequest("GET", uri, nil)
- if err != nil {
- return AccountRole{}, errors.Wrap(err, errMakeRequestError)
- }
- var accountRole AccountRoleDetailResponse
- err = json.Unmarshal(res, &accountRole)
- if err != nil {
- return AccountRole{}, errors.Wrap(err, errUnmarshalError)
- }
- return accountRole.Result, nil
- }
|