Browse Source

desktop: allow this client to be identified via user-agent

Previously the HTTP requests were sent with a generic Go-http-client
user-agent which made it hard to determine where the requests are
coming from. It's important that we can find clients so that they
can be updated if APIs change in future.

Signed-off-by: David Scott <[email protected]>
David Scott 1 year ago
parent
commit
38e3d670a9
1 changed files with 11 additions and 0 deletions
  1. 11 0
      internal/desktop/client.go

+ 11 - 0
internal/desktop/client.go

@@ -27,11 +27,15 @@ import (
 	"net/http"
 	"net/http"
 	"strings"
 	"strings"
 
 
+	"github.com/docker/compose/v2/internal"
 	"github.com/docker/compose/v2/internal/memnet"
 	"github.com/docker/compose/v2/internal/memnet"
 	"github.com/r3labs/sse"
 	"github.com/r3labs/sse"
 	"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
 	"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
 )
 )
 
 
+// identify this client in the logs
+var userAgent = "compose/" + internal.Version
+
 // Client for integration with Docker Desktop features.
 // Client for integration with Docker Desktop features.
 type Client struct {
 type Client struct {
 	apiEndpoint string
 	apiEndpoint string
@@ -76,6 +80,7 @@ func (c *Client) Ping(ctx context.Context) (*PingResponse, error) {
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -105,6 +110,7 @@ func (c *Client) FeatureFlags(ctx context.Context) (FeatureFlagResponse, error)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -135,6 +141,7 @@ func (c *Client) GetFileSharesConfig(ctx context.Context) (*GetFileSharesConfigR
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -170,6 +177,7 @@ func (c *Client) CreateFileShare(ctx context.Context, r CreateFileShareRequest)
 		return nil, err
 		return nil, err
 	}
 	}
 	req.Header.Set("Content-Type", "application/json")
 	req.Header.Set("Content-Type", "application/json")
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -212,6 +220,7 @@ func (c *Client) ListFileShares(ctx context.Context) ([]FileShareSession, error)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -236,6 +245,7 @@ func (c *Client) DeleteFileShare(ctx context.Context, id string) error {
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
@@ -268,6 +278,7 @@ func (c *Client) StreamFileShares(ctx context.Context) (<-chan EventMessage[[]Fi
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	req.Header.Set("User-Agent", userAgent)
 	resp, err := c.client.Do(req)
 	resp, err := c.client.Do(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err