mirror of
https://github.com/containers/podman.git
synced 2026-02-06 04:11:53 -05:00
Add binding for networks and begin documentation for binding methods for godoc. Also, add major functions to their own subpackages so reduce the amount of of method confusion. So instead of: bindings.ListImages(), we now do a [bindings].images.List(). Also, the connection is passed to each binding method via a context to allow for future growth. Lastly, add first set of tests. There are a couple of things to work out for rootless tests yet. Signed-off-by: Brent Baude <bbaude@redhat.com>
46 lines
965 B
Go
46 lines
965 B
Go
package bindings
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"net/http"
|
|
|
|
"github.com/containers/libpod/pkg/api/handlers/utils"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
var (
|
|
ErrNotImplemented = errors.New("function not implemented")
|
|
)
|
|
|
|
func handleError(data []byte) error {
|
|
e := utils.ErrorModel{}
|
|
if err := json.Unmarshal(data, &e); err != nil {
|
|
return err
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (a APIResponse) Process(unmarshalInto interface{}) error {
|
|
data, err := ioutil.ReadAll(a.Response.Body)
|
|
if err != nil {
|
|
return errors.Wrap(err, "unable to process API response")
|
|
}
|
|
if a.Response.StatusCode == http.StatusOK {
|
|
if unmarshalInto != nil {
|
|
return json.Unmarshal(data, unmarshalInto)
|
|
}
|
|
return nil
|
|
}
|
|
// TODO should we add a debug here with the response code?
|
|
return handleError(data)
|
|
}
|
|
|
|
func CheckResponseCode(inError error) (int, error) {
|
|
e, ok := inError.(utils.ErrorModel)
|
|
if !ok {
|
|
return -1, errors.New("error is not type ErrorModel")
|
|
}
|
|
return e.Code(), nil
|
|
}
|