69 lines
1.7 KiB
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)
|
|
}
|