github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/lib/container_inspect.go (about)

     1  package lib
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"io/ioutil"
     7  	"net/http"
     8  	"net/url"
     9  
    10  	"github.com/docker/docker/api/types"
    11  )
    12  
    13  // ContainerInspect returns the container information.
    14  func (cli *Client) ContainerInspect(containerID string) (types.ContainerJSON, error) {
    15  	serverResp, err := cli.get("/containers/"+containerID+"/json", nil, nil)
    16  	if err != nil {
    17  		if serverResp.statusCode == http.StatusNotFound {
    18  			return types.ContainerJSON{}, containerNotFoundError{containerID}
    19  		}
    20  		return types.ContainerJSON{}, err
    21  	}
    22  	defer ensureReaderClosed(serverResp)
    23  
    24  	var response types.ContainerJSON
    25  	err = json.NewDecoder(serverResp.body).Decode(&response)
    26  	return response, err
    27  }
    28  
    29  // ContainerInspectWithRaw returns the container information and it's raw representation.
    30  func (cli *Client) ContainerInspectWithRaw(containerID string, getSize bool) (types.ContainerJSON, []byte, error) {
    31  	query := url.Values{}
    32  	if getSize {
    33  		query.Set("size", "1")
    34  	}
    35  	serverResp, err := cli.get("/containers/"+containerID+"/json", query, nil)
    36  	if err != nil {
    37  		if serverResp.statusCode == http.StatusNotFound {
    38  			return types.ContainerJSON{}, nil, containerNotFoundError{containerID}
    39  		}
    40  		return types.ContainerJSON{}, nil, err
    41  	}
    42  	defer ensureReaderClosed(serverResp)
    43  
    44  	body, err := ioutil.ReadAll(serverResp.body)
    45  	if err != nil {
    46  		return types.ContainerJSON{}, nil, err
    47  	}
    48  
    49  	var response types.ContainerJSON
    50  	rdr := bytes.NewReader(body)
    51  	err = json.NewDecoder(rdr).Decode(&response)
    52  	return response, body, err
    53  }
    54  
    55  func (cli *Client) containerInspectWithResponse(containerID string, query url.Values) (types.ContainerJSON, *serverResponse, error) {
    56  	serverResp, err := cli.get("/containers/"+containerID+"/json", nil, nil)
    57  	if err != nil {
    58  		return types.ContainerJSON{}, serverResp, err
    59  	}
    60  
    61  	var response types.ContainerJSON
    62  	err = json.NewDecoder(serverResp.body).Decode(&response)
    63  	return response, serverResp, err
    64  }