| package client |
| |
| import ( |
| "context" |
| "io" |
| "net/url" |
| ) |
| |
| // ContainerExportOptions specifies options for container export operations. |
| type ContainerExportOptions struct { |
| // Currently no options are defined for ContainerExport |
| } |
| |
| // ContainerExportResult represents the result of a container export operation. |
| type ContainerExportResult interface { |
| io.ReadCloser |
| } |
| |
| // ContainerExport retrieves the raw contents of a container |
| // and returns them as an [io.ReadCloser]. It's up to the caller |
| // to close the stream. |
| // |
| // The underlying [io.ReadCloser] is automatically closed if the context is canceled, |
| func (cli *Client) ContainerExport(ctx context.Context, containerID string, options ContainerExportOptions) (ContainerExportResult, error) { |
| containerID, err := trimID("container", containerID) |
| if err != nil { |
| return nil, err |
| } |
| |
| resp, err := cli.get(ctx, "/containers/"+containerID+"/export", url.Values{}, nil) |
| if err != nil { |
| return nil, err |
| } |
| |
| return &containerExportResult{ |
| ReadCloser: newCancelReadCloser(ctx, resp.Body), |
| }, nil |
| } |
| |
| type containerExportResult struct { |
| io.ReadCloser |
| } |
| |
| var ( |
| _ io.ReadCloser = (*containerExportResult)(nil) |
| _ ContainerExportResult = (*containerExportResult)(nil) |
| ) |