terraform/vendor/github.com/Ensighten/udnssdk/account.go

69 lines
1.7 KiB
Go

package udnssdk
import (
"fmt"
"net/http"
)
// AccountsService provides access to account resources
type AccountsService struct {
client *Client
}
// Account represents responses from the service
type Account struct {
AccountName string `json:"accountName"`
AccountHolderUserName string `json:"accountHolderUserName"`
OwnerUserName string `json:"ownerUserName"`
NumberOfUsers int `json:"numberOfUsers"`
NumberOfGroups int `json:"numberOfGroups"`
AccountType string `json:"accountType"`
}
// AccountListDTO represents a account index response
type AccountListDTO struct {
Accounts []Account `json:"accounts"`
Resultinfo ResultInfo `json:"resultInfo"`
}
// AccountKey represents the string identifier of an Account
type AccountKey string
// URI generates the URI for an Account
func (k AccountKey) URI() string {
uri := "accounts"
if k != "" {
uri = fmt.Sprintf("accounts/%s", k)
}
return uri
}
// AccountsURI generates the URI for Accounts collection
func AccountsURI() string {
return "accounts"
}
// Select requests all Accounts of user
func (s *AccountsService) Select() ([]Account, *http.Response, error) {
var ald AccountListDTO
res, err := s.client.get(AccountsURI(), &ald)
accts := []Account{}
for _, t := range ald.Accounts {
accts = append(accts, t)
}
return accts, res, err
}
// Find requests an Account by AccountKey
func (s *AccountsService) Find(k AccountKey) (Account, *http.Response, error) {
var t Account
res, err := s.client.get(k.URI(), &t)
return t, res, err
}
// Delete requests deletion of an Account by AccountKey
func (s *AccountsService) Delete(k AccountKey) (*http.Response, error) {
return s.client.delete(k.URI(), nil)
}