Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions internal/dev_server/adapters/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"

ldapi "github.com/launchdarkly/api-client-go/v14"
"github.com/pkg/errors"
)

const ctxKeyApi = ctxKey("adapters.api")
Expand All @@ -26,14 +25,9 @@ func NewApi(client ldapi.APIClient) Api {
}

func (a Api) GetSdkKey(ctx context.Context, projectKey, environmentKey string) (string, error) {
project, _, err := a.apiClient.ProjectsApi.GetProject(ctx, projectKey).Execute()
environment, _, err := a.apiClient.EnvironmentsApi.GetEnvironment(ctx, projectKey, environmentKey).Execute()
if err != nil {
return "", err
}
for _, environment := range project.Environments.Items {
if environment.Key == environmentKey {
return environment.ApiKey, nil
}
}
return "", errors.Errorf("environment, %s, not found", environmentKey)
return environment.ApiKey, nil
}
4 changes: 2 additions & 2 deletions internal/dev_server/adapters/middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import (
type ctxKey string

// Middleware puts adapters on to the context for consumption by other things
func Middleware(client ldapi.APIClient) func(handler http.Handler) http.Handler {
func Middleware(client ldapi.APIClient, eventsUrl, pollingUrl, streamingUrl string) func(handler http.Handler) http.Handler {
return func(handler http.Handler) http.Handler {
return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
ctx := request.Context()
ctx = WithSdk(ctx, newSdk())
ctx = WithSdk(ctx, newSdk(eventsUrl, pollingUrl, streamingUrl))
ctx = WithApi(ctx, NewApi(client))
request = request.WithContext(ctx)
handler.ServeHTTP(writer, request)
Expand Down
25 changes: 21 additions & 4 deletions internal/dev_server/adapters/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,33 @@ func GetSdk(ctx context.Context) Sdk {
}

type Sdk struct {
eventsUrl string
pollingUrl string
streamingUrl string
}

func newSdk() Sdk {
return Sdk{}
func newSdk(eventsUrl, pollingUrl, streamingUrl string) Sdk {
return Sdk{
eventsUrl: eventsUrl,
pollingUrl: pollingUrl,
streamingUrl: streamingUrl,
}
}

func (s Sdk) GetAllFlagsState(ctx context.Context, ldContext ldcontext.Context, sdkKey string) (flagstate.AllFlags, error) {
ldClient, err := ldsdk.MakeClient(sdkKey, 5*time.Second)
config := ldsdk.Config{}
if s.pollingUrl != "" {
config.ServiceEndpoints.Polling = s.pollingUrl
}
if s.eventsUrl != "" {
config.ServiceEndpoints.Events = s.eventsUrl
}
if s.streamingUrl != "" {
config.ServiceEndpoints.Streaming = s.streamingUrl
}
ldClient, err := ldsdk.MakeCustomClient(sdkKey, config, 5*time.Second)
if err != nil {
return flagstate.AllFlags{}, nil
return flagstate.AllFlags{}, err
}
flags := ldClient.AllFlagsState(ldContext)
return flags, nil
Expand Down
2 changes: 1 addition & 1 deletion internal/dev_server/dev_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (c LDClient) RunServer(ctx context.Context, accessToken, baseURI string) {
ss := api.NewStrictServer()
apiServer := api.NewStrictHandler(ss, nil)
r := mux.NewRouter()
r.Use(adapters.Middleware(*ldClient))
r.Use(adapters.Middleware(*ldClient, "https://events.ld.catamorphic.com", "https://relay-stg.ld.catamorphic.com", "https://relay-stg.ld.catamorphic.com")) // TODO add to config
r.Use(model.StoreMiddleware(sqlStore))
// TODO need a subrouter for relay endpoints
handler := api.HandlerFromMux(apiServer, r)
Expand Down