1package packngo 2 3const facilityBasePath = "/facilities" 4 5// FacilityService interface defines available facility methods 6type FacilityService interface { 7 List() ([]Facility, *Response, error) 8} 9 10type facilityRoot struct { 11 Facilities []Facility `json:"facilities"` 12} 13 14// Facility represents a Packet facility 15type Facility struct { 16 ID string `json:"id"` 17 Name string `json:"name,omitempty"` 18 Code string `json:"code,omitempty"` 19 Features []string `json:"features,omitempty"` 20 Address *Address `json:"address,omitempty"` 21 URL string `json:"href,omitempty"` 22} 23 24func (f Facility) String() string { 25 return Stringify(f) 26} 27 28// Address - the physical address of the facility 29type Address struct { 30 ID string `json:"id,omitempty"` 31} 32 33func (a Address) String() string { 34 return Stringify(a) 35} 36 37// FacilityServiceOp implements FacilityService 38type FacilityServiceOp struct { 39 client *Client 40} 41 42// List returns all available Packet facilities 43func (s *FacilityServiceOp) List() ([]Facility, *Response, error) { 44 root := new(facilityRoot) 45 46 resp, err := s.client.DoRequest("GET", facilityBasePath, nil, root) 47 if err != nil { 48 return nil, resp, err 49 } 50 51 return root.Facilities, resp, err 52} 53