mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 02:46:30 +02:00
36 lines
1 KiB
Go
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
|
|
}
|