diff --git a/api/client/diff.go b/api/client/diff.go index 24350a04a0..f180e00172 100644 --- a/api/client/diff.go +++ b/api/client/diff.go @@ -1,10 +1,8 @@ package client import ( - "encoding/json" "fmt" - "github.com/docker/docker/api/types" Cli "github.com/docker/docker/cli" "github.com/docker/docker/pkg/archive" flag "github.com/docker/docker/pkg/mflag" @@ -27,18 +25,11 @@ func (cli *DockerCli) CmdDiff(args ...string) error { return fmt.Errorf("Container name cannot be empty") } - serverResp, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, nil) + changes, err := cli.client.ContainerDiff(cmd.Arg(0)) if err != nil { return err } - defer serverResp.body.Close() - - changes := []types.ContainerChange{} - if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil { - return err - } - for _, change := range changes { var kind string switch change.Kind { diff --git a/api/client/lib/diff.go b/api/client/lib/diff.go new file mode 100644 index 0000000000..f0d027afc1 --- /dev/null +++ b/api/client/lib/diff.go @@ -0,0 +1,25 @@ +package lib + +import ( + "encoding/json" + "net/url" + + "github.com/docker/docker/api/types" +) + +// ContainerDiff shows differences in a container filesystem since it was started. +func (cli *Client) ContainerDiff(containerID string) ([]types.ContainerChange, error) { + var changes []types.ContainerChange + + serverResp, err := cli.GET("/containers/"+containerID+"/changes", url.Values{}, nil) + if err != nil { + return changes, err + } + defer serverResp.body.Close() + + if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil { + return changes, err + } + + return changes, nil +}