1package api 2 3import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 "net/url" 8) 9 10// ContainerData represents a container data (S3) 11type ContainerData struct { 12 LastModified string `json:"last_modified"` 13 Name string `json:"name"` 14 Size string `json:"size"` 15} 16 17type getContainerDatas struct { 18 Container []*ContainerData `json:"container"` 19} 20 21// Container represents a container (S3) 22type Container struct { 23 Organization `json:"organization"` 24 Name string `json:"name"` 25 Size string `json:"size"` 26} 27 28type getContainers struct { 29 Containers []*Container `json:"containers"` 30} 31 32// GetContainers returns a GetContainers 33func (s *API) GetContainers() ([]*Container, error) { 34 resp, err := s.GetResponsePaginate(s.computeAPI, "containers", url.Values{}) 35 if err != nil { 36 return nil, err 37 } 38 defer resp.Body.Close() 39 40 body, err := s.handleHTTPError([]int{http.StatusOK}, resp) 41 if err != nil { 42 return nil, err 43 } 44 var containers getContainers 45 46 if err = json.Unmarshal(body, &containers); err != nil { 47 return nil, err 48 } 49 return containers.Containers, nil 50} 51 52// GetContainerDatas returns a GetContainerDatas 53func (s *API) GetContainerDatas(container string) ([]*ContainerData, error) { 54 resp, err := s.GetResponsePaginate(s.computeAPI, fmt.Sprintf("containers/%s", container), url.Values{}) 55 if err != nil { 56 return nil, err 57 } 58 defer resp.Body.Close() 59 60 body, err := s.handleHTTPError([]int{http.StatusOK}, resp) 61 if err != nil { 62 return nil, err 63 } 64 var datas getContainerDatas 65 66 if err = json.Unmarshal(body, &datas); err != nil { 67 return nil, err 68 } 69 return datas.Container, nil 70} 71