consul/vendor/github.com/nicolai86/scaleway-sdk/container.go

71 lines
1.6 KiB
Go

package api
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
// ContainerData represents a container data (S3)
type ContainerData struct {
LastModified string `json:"last_modified"`
Name string `json:"name"`
Size string `json:"size"`
}
type getContainerDatas struct {
Container []*ContainerData `json:"container"`
}
// Container represents a container (S3)
type Container struct {
Organization `json:"organization"`
Name string `json:"name"`
Size string `json:"size"`
}
type getContainers struct {
Containers []*Container `json:"containers"`
}
// GetContainers returns a GetContainers
func (s *API) GetContainers() ([]*Container, error) {
resp, err := s.GetResponsePaginate(s.computeAPI, "containers", url.Values{})
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := s.handleHTTPError([]int{http.StatusOK}, resp)
if err != nil {
return nil, err
}
var containers getContainers
if err = json.Unmarshal(body, &containers); err != nil {
return nil, err
}
return containers.Containers, nil
}
// GetContainerDatas returns a GetContainerDatas
func (s *API) GetContainerDatas(container string) ([]*ContainerData, error) {
resp, err := s.GetResponsePaginate(s.computeAPI, fmt.Sprintf("containers/%s", container), url.Values{})
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := s.handleHTTPError([]int{http.StatusOK}, resp)
if err != nil {
return nil, err
}
var datas getContainerDatas
if err = json.Unmarshal(body, &datas); err != nil {
return nil, err
}
return datas.Container, nil
}