435c0d9fc8
This PR switches the Nomad repository from using govendor to Go modules for managing dependencies. Aspects of the Nomad workflow remain pretty much the same. The usual Makefile targets should continue to work as they always did. The API submodule simply defers to the parent Nomad version on the repository, keeping the semantics of API versioning that currently exists.
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package godo
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
)
|
|
|
|
// AccountService is an interface for interfacing with the Account
|
|
// endpoints of the DigitalOcean API
|
|
// See: https://developers.digitalocean.com/documentation/v2/#account
|
|
type AccountService interface {
|
|
Get(context.Context) (*Account, *Response, error)
|
|
}
|
|
|
|
// AccountServiceOp handles communication with the Account related methods of
|
|
// the DigitalOcean API.
|
|
type AccountServiceOp struct {
|
|
client *Client
|
|
}
|
|
|
|
var _ AccountService = &AccountServiceOp{}
|
|
|
|
// Account represents a DigitalOcean Account
|
|
type Account struct {
|
|
DropletLimit int `json:"droplet_limit,omitempty"`
|
|
FloatingIPLimit int `json:"floating_ip_limit,omitempty"`
|
|
VolumeLimit int `json:"volume_limit,omitempty"`
|
|
Email string `json:"email,omitempty"`
|
|
UUID string `json:"uuid,omitempty"`
|
|
EmailVerified bool `json:"email_verified,omitempty"`
|
|
Status string `json:"status,omitempty"`
|
|
StatusMessage string `json:"status_message,omitempty"`
|
|
}
|
|
|
|
type accountRoot struct {
|
|
Account *Account `json:"account"`
|
|
}
|
|
|
|
func (r Account) String() string {
|
|
return Stringify(r)
|
|
}
|
|
|
|
// Get DigitalOcean account info
|
|
func (s *AccountServiceOp) Get(ctx context.Context) (*Account, *Response, error) {
|
|
|
|
path := "v2/account"
|
|
|
|
req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
root := new(accountRoot)
|
|
resp, err := s.client.Do(ctx, req, root)
|
|
if err != nil {
|
|
return nil, resp, err
|
|
}
|
|
|
|
return root.Account, resp, err
|
|
}
|