Skip to content

Commit

Permalink
Merge pull request #50 from depot/user-agent
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobwgillespie authored Nov 21, 2022
2 parents d566064 + 22218a7 commit 946c3ff
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 19 deletions.
6 changes: 3 additions & 3 deletions pkg/api/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
func AuthorizeDevice(ctx context.Context) (*cliv1beta1.FinishLoginResponse, error) {
client := NewLoginClient()
req := cliv1beta1.StartLoginRequest{}
response, err := client.StartLogin(ctx, WithHeaders(connect.NewRequest(&req), ""))
response, err := client.StartLogin(ctx, connect.NewRequest(&req))
if err != nil {
return nil, err
}
Expand All @@ -24,9 +24,9 @@ func AuthorizeDevice(ctx context.Context) (*cliv1beta1.FinishLoginResponse, erro
spinner.Start()
defer spinner.Stop()

stream, err := client.FinishLogin(ctx, WithHeaders(connect.NewRequest(&cliv1beta1.FinishLoginRequest{
stream, err := client.FinishLogin(ctx, connect.NewRequest(&cliv1beta1.FinishLoginRequest{
Id: response.Msg.Id,
}), ""))
}))
if err != nil {
return nil, err
}
Expand Down
38 changes: 38 additions & 0 deletions pkg/api/interceptors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package api

import (
"context"
"fmt"
"runtime"

"github.com/bufbuild/connect-go"
"github.com/depot/cli/internal/build"
)

func WithUserAgent() connect.ClientOption {
agent := fmt.Sprintf("depot-cli/%s/%s/%s", build.Version, runtime.GOOS, runtime.GOARCH)
return connect.WithInterceptors(&agentInterceptor{agent})
}

type agentInterceptor struct {
agent string
}

func (i *agentInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc {
return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) {
req.Header().Set("User-Agent", i.agent)
return next(ctx, req)
}
}

func (i *agentInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc {
return func(ctx context.Context, spec connect.Spec) connect.StreamingClientConn {
conn := next(ctx, spec)
conn.RequestHeader().Set("User-Agent", i.agent)
return conn
}
}

func (i *agentInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc {
return next
}
17 changes: 5 additions & 12 deletions pkg/api/rpc.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package api

import (
"fmt"
"net/http"
"os"
"runtime"

"github.com/bufbuild/connect-go"
"github.com/depot/cli/internal/build"
"github.com/depot/cli/pkg/proto/depot/cli/v1beta1/cliv1beta1connect"
)

Expand All @@ -16,30 +13,26 @@ func NewBuildClient() cliv1beta1connect.BuildServiceClient {
if baseURL == "" {
baseURL = "https://api.depot.dev"
}
return cliv1beta1connect.NewBuildServiceClient(http.DefaultClient, baseURL, connect.WithGRPC())
return cliv1beta1connect.NewBuildServiceClient(http.DefaultClient, baseURL, connect.WithGRPC(), WithUserAgent())
}

func NewLoginClient() cliv1beta1connect.LoginServiceClient {
baseURL := os.Getenv("DEPOT_API_URL")
if baseURL == "" {
baseURL = "https://api.depot.dev"
}
return cliv1beta1connect.NewLoginServiceClient(http.DefaultClient, baseURL, connect.WithGRPC())
return cliv1beta1connect.NewLoginServiceClient(http.DefaultClient, baseURL, connect.WithGRPC(), WithUserAgent())
}

func NewProjectsClient() cliv1beta1connect.ProjectsServiceClient {
baseURL := os.Getenv("DEPOT_API_URL")
if baseURL == "" {
baseURL = "https://api.depot.dev"
}
return cliv1beta1connect.NewProjectsServiceClient(http.DefaultClient, baseURL, connect.WithGRPC())
return cliv1beta1connect.NewProjectsServiceClient(http.DefaultClient, baseURL, connect.WithGRPC(), WithUserAgent())
}

func WithHeaders[T any](req *connect.Request[T], token string) *connect.Request[T] {
req.Header().Add("User-Agent", fmt.Sprintf("depot-cli/%s/%s/%s", build.Version, runtime.GOOS, runtime.GOARCH))
req.Header().Add("Depot-User-Agent", fmt.Sprintf("depot-cli/%s/%s/%s", build.Version, runtime.GOOS, runtime.GOARCH))
if token != "" {
req.Header().Add("Authorization", "Bearer "+token)
}
func WithAuthentication[T any](req *connect.Request[T], token string) *connect.Request[T] {
req.Header().Add("Authorization", "Bearer "+token)
return req
}
2 changes: 1 addition & 1 deletion pkg/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (b *Builder) Acquire(l progress.Logger) (*AcquiredBuilder, error) {
BuildId: b.BuildID,
Platform: builderPlatform,
}
stream, err := client.GetBuildKitConnection(ctx, api.WithHeaders(connect.NewRequest(&req), b.token))
stream, err := client.GetBuildKitConnection(ctx, api.WithAuthentication(connect.NewRequest(&req), b.token))
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/build/buildx.go
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, opts map[string]bu
client := depotapi.NewBuildClient()

req := cliv1beta1.CreateBuildRequest{ProjectId: in.project}
b, err := client.CreateBuild(ctx, depotapi.WithHeaders(connect.NewRequest(&req), in.token))
b, err := client.CreateBuild(ctx, depotapi.WithAuthentication(connect.NewRequest(&req), in.token))
if err != nil {
return "", err
}
Expand All @@ -282,7 +282,7 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, opts map[string]bu
}
req.Result = &cliv1beta1.FinishBuildRequest_Error{Error: &cliv1beta1.FinishBuildRequest_BuildError{Error: errorMessage}}
}
_, err := client.FinishBuild(ctx, depotapi.WithHeaders(connect.NewRequest(&req), in.token))
_, err := client.FinishBuild(ctx, depotapi.WithAuthentication(connect.NewRequest(&req), in.token))
if err != nil {
log.Printf("error releasing builder: %v", err)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/init/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func NewCmdInit() *cobra.Command {
client := api.NewProjectsClient()

req := cliv1beta1.ListProjectsRequest{}
projects, err := client.ListProjects(context.TODO(), api.WithHeaders(connect.NewRequest(&req), token))
projects, err := client.ListProjects(context.TODO(), api.WithAuthentication(connect.NewRequest(&req), token))
if err != nil {
return err
}
Expand Down

0 comments on commit 946c3ff

Please sign in to comment.