45 lines
937 B
Go
45 lines
937 B
Go
package packngo
|
|
|
|
const osBasePath = "/operating-systems"
|
|
|
|
// OSService interface defines available operating_systems methods
|
|
type OSService interface {
|
|
List() ([]OS, *Response, error)
|
|
}
|
|
|
|
type osRoot struct {
|
|
OperatingSystems []OS `json:"operating_systems"`
|
|
}
|
|
|
|
// OS represents a Packet operating system
|
|
type OS struct {
|
|
Name string `json:"name"`
|
|
Slug string `json:"slug"`
|
|
Distro string `json:"distro"`
|
|
Version string `json:"version"`
|
|
}
|
|
func (o OS) String() string {
|
|
return Stringify(o)
|
|
}
|
|
|
|
// OSServiceOp implements OSService
|
|
type OSServiceOp struct {
|
|
client *Client
|
|
}
|
|
|
|
// List returns all available operating systems
|
|
func (s *OSServiceOp) List() ([]OS, *Response, error) {
|
|
req, err := s.client.NewRequest("GET", osBasePath, nil)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
root := new(osRoot)
|
|
resp, err := s.client.Do(req, root)
|
|
if err != nil {
|
|
return nil, resp, err
|
|
}
|
|
|
|
return root.OperatingSystems, resp, err
|
|
}
|