pomerium/internal/zero/controller/cloud_api.go
2023-08-08 16:15:00 -04:00

36 lines
1 KiB
Go

package controller
import (
"context"
"fmt"
"net/http"
cluster_api "github.com/pomerium/zero-sdk/cluster"
connect_api "github.com/pomerium/zero-sdk/connect"
connect_mux "github.com/pomerium/zero-sdk/connect-mux"
token_api "github.com/pomerium/zero-sdk/token"
)
func (c *controller) InitAPI(ctx context.Context) error {
fetcher, err := cluster_api.NewTokenFetcher(c.cfg.clusterAPIEndpoint)
if err != nil {
return fmt.Errorf("error creating token fetcher: %w", err)
}
tokenCache := token_api.NewCache(fetcher, c.cfg.apiToken)
clusterClient, err := cluster_api.NewAuthorizedClient(c.cfg.clusterAPIEndpoint, tokenCache.GetToken, http.DefaultClient)
if err != nil {
return fmt.Errorf("error creating cluster client: %w", err)
}
connectClient, err := connect_api.NewAuthorizedConnectClient(ctx, c.cfg.connectAPIEndpoint, tokenCache.GetToken)
if err != nil {
return fmt.Errorf("error creating connect client: %w", err)
}
c.connectMux = connect_mux.Start(ctx, connectClient)
c.clusterClient = clusterClient
return nil
}