mirror of
https://github.com/docker/cli.git
synced 2026-09-28 02:06:53 -04:00
vendor: github.com/moby/moby/client v0.2.2
full diff: https://github.com/moby/moby/client/compare/v0.2.2-rc.2...v0.2.2 Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
+8
@@ -59,6 +59,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"slices"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
@@ -241,6 +242,13 @@ func New(ops ...Opt) (*Client, error) {
|
||||
|
||||
c.client.Transport = otelhttp.NewTransport(c.client.Transport, c.traceOpts...)
|
||||
|
||||
if len(cfg.responseHooks) > 0 {
|
||||
c.client.Transport = &responseHookTransport{
|
||||
base: c.client.Transport,
|
||||
hooks: slices.Clone(cfg.responseHooks),
|
||||
}
|
||||
}
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
||||
|
||||
+25
@@ -2,6 +2,7 @@ package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -55,10 +56,19 @@ type clientConfig struct {
|
||||
// takes precedence. Either field disables API-version negotiation.
|
||||
envAPIVersion string
|
||||
|
||||
// responseHooks is a list of custom response hooks to call on responses.
|
||||
responseHooks []ResponseHook
|
||||
|
||||
// traceOpts is a list of options to configure the tracing span.
|
||||
traceOpts []otelhttp.Option
|
||||
}
|
||||
|
||||
// ResponseHook is called for each HTTP response returned by the daemon.
|
||||
// Hooks are invoked in the order they were added.
|
||||
//
|
||||
// Hooks must not read or close resp.Body.
|
||||
type ResponseHook func(*http.Response)
|
||||
|
||||
// Opt is a configuration option to initialize a [Client].
|
||||
type Opt func(*clientConfig) error
|
||||
|
||||
@@ -348,3 +358,18 @@ func WithTraceOptions(opts ...otelhttp.Option) Opt {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithResponseHook adds a ResponseHook to the client. ResponseHooks are called
|
||||
// for each HTTP response returned by the daemon. Hooks are invoked in the order
|
||||
// they were added.
|
||||
//
|
||||
// Hooks must not read or close resp.Body.
|
||||
func WithResponseHook(h ResponseHook) Opt {
|
||||
return func(c *clientConfig) error {
|
||||
if h == nil {
|
||||
return errors.New("invalid response hook: hook is nil")
|
||||
}
|
||||
c.responseHooks = append(c.responseHooks, h)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type responseHookTransport struct {
|
||||
base http.RoundTripper
|
||||
hooks []ResponseHook
|
||||
}
|
||||
|
||||
func (t *responseHookTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
resp, err := t.base.RoundTrip(req)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
for _, h := range t.hooks {
|
||||
h(resp)
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
+1
-1
@@ -23,7 +23,7 @@ type ContainerAttachResult struct {
|
||||
|
||||
// ContainerAttach attaches a connection to a container in the server.
|
||||
// It returns a [HijackedResponse] with the hijacked connection
|
||||
// and a reader to get output. It's up to the called to close
|
||||
// and a reader to get output. It's up to the caller to close
|
||||
// the hijacked connection by calling [HijackedResponse.Close].
|
||||
//
|
||||
// The stream format on the response uses one of two formats:
|
||||
|
||||
+3
-5
@@ -82,8 +82,7 @@ type ExecStartOptions struct {
|
||||
}
|
||||
|
||||
// ExecStartResult holds the result of starting a container exec.
|
||||
type ExecStartResult struct {
|
||||
}
|
||||
type ExecStartResult struct{}
|
||||
|
||||
// ExecStart starts an exec process already created in the docker host.
|
||||
func (cli *Client) ExecStart(ctx context.Context, execID string, options ExecStartOptions) (ExecStartResult, error) {
|
||||
@@ -118,7 +117,7 @@ type ExecAttachResult struct {
|
||||
// ExecAttach attaches a connection to an exec process in the server.
|
||||
//
|
||||
// It returns a [HijackedResponse] with the hijacked connection
|
||||
// and a reader to get output. It's up to the called to close
|
||||
// and a reader to get output. It's up to the caller to close
|
||||
// the hijacked connection by calling [HijackedResponse.Close].
|
||||
//
|
||||
// The stream format on the response uses one of two formats:
|
||||
@@ -160,8 +159,7 @@ func getConsoleSize(hasTTY bool, consoleSize ConsoleSize) (*[2]uint, error) {
|
||||
}
|
||||
|
||||
// ExecInspectOptions holds options for inspecting a container exec.
|
||||
type ExecInspectOptions struct {
|
||||
}
|
||||
type ExecInspectOptions struct{}
|
||||
|
||||
// ExecInspectResult holds the result of inspecting a container exec.
|
||||
//
|
||||
|
||||
+15
-11
@@ -13,11 +13,23 @@ import (
|
||||
type ContainerListOptions struct {
|
||||
Size bool
|
||||
All bool
|
||||
Latest bool
|
||||
Since string
|
||||
Before string
|
||||
Limit int
|
||||
Filters Filters
|
||||
|
||||
// Latest is non-functional and should not be used. Use Limit: 1 instead.
|
||||
//
|
||||
// Deprecated: the Latest option is non-functional and should not be used. Use Limit: 1 instead.
|
||||
Latest bool
|
||||
|
||||
// Since is no longer supported. Use the "since" filter instead.
|
||||
//
|
||||
// Deprecated: the Since option is no longer supported since docker 1.12 (API 1.24). Use the "since" filter instead.
|
||||
Since string
|
||||
|
||||
// Before is no longer supported. Use the "since" filter instead.
|
||||
//
|
||||
// Deprecated: the Before option is no longer supported since docker 1.12 (API 1.24). Use the "before" filter instead.
|
||||
Before string
|
||||
}
|
||||
|
||||
type ContainerListResult struct {
|
||||
@@ -36,14 +48,6 @@ func (cli *Client) ContainerList(ctx context.Context, options ContainerListOptio
|
||||
query.Set("limit", strconv.Itoa(options.Limit))
|
||||
}
|
||||
|
||||
if options.Since != "" {
|
||||
query.Set("since", options.Since)
|
||||
}
|
||||
|
||||
if options.Before != "" {
|
||||
query.Set("before", options.Before)
|
||||
}
|
||||
|
||||
if options.Size {
|
||||
query.Set("size", "1")
|
||||
}
|
||||
|
||||
+1
-3
@@ -42,8 +42,7 @@ func (cli *Client) ContainerResize(ctx context.Context, containerID string, opti
|
||||
type ExecResizeOptions ContainerResizeOptions
|
||||
|
||||
// ExecResizeResult holds the result of resizing a container exec TTY.
|
||||
type ExecResizeResult struct {
|
||||
}
|
||||
type ExecResizeResult struct{}
|
||||
|
||||
// ExecResize changes the size of the tty for an exec process running inside a container.
|
||||
func (cli *Client) ExecResize(ctx context.Context, execID string, options ExecResizeOptions) (ExecResizeResult, error) {
|
||||
@@ -62,5 +61,4 @@ func (cli *Client) ExecResize(ctx context.Context, execID string, options ExecRe
|
||||
return ExecResizeResult{}, err
|
||||
}
|
||||
return ExecResizeResult{}, nil
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -189,7 +189,7 @@ github.com/moby/moby/api/types/storage
|
||||
github.com/moby/moby/api/types/swarm
|
||||
github.com/moby/moby/api/types/system
|
||||
github.com/moby/moby/api/types/volume
|
||||
# github.com/moby/moby/client v0.2.2-rc.2
|
||||
# github.com/moby/moby/client v0.2.2
|
||||
## explicit; go 1.24.0
|
||||
github.com/moby/moby/client
|
||||
github.com/moby/moby/client/internal
|
||||
|
||||
Reference in New Issue
Block a user