diff --git a/splitio/api/controllers/dtos.go b/splitio/api/controllers/dtos.go new file mode 100644 index 0000000..d69b5a4 --- /dev/null +++ b/splitio/api/controllers/dtos.go @@ -0,0 +1,12 @@ +package controllers + +type SplitViewDTO struct { + Name string `json:"name"` + TrafficType string `json:"trafficType"` + Killed bool `json:"killed"` + Treatments []string `json:"treatments"` + ChangeNumber int64 `json:"changeNumber"` + Configs map[string]string `json:"configs"` + DefaultTreatment string `json:"defaultTreatment"` + Sets []string `json:"sets"` +} diff --git a/splitio/api/controllers/health.go b/splitio/api/controllers/health.go index 78a63c2..f2b9bb9 100644 --- a/splitio/api/controllers/health.go +++ b/splitio/api/controllers/health.go @@ -19,6 +19,7 @@ type HealthCheckController struct { func (c *HealthCheckController) Register(router gin.IRouter) { router.GET("/health", c.isHealthy) router.GET("/ready", c.isReady) + router.GET("/checkFlag", c.checkFlag) } func (c *HealthCheckController) isHealthy(ctx *gin.Context) { @@ -50,6 +51,39 @@ func (c *HealthCheckController) isReady(ctx *gin.Context) { ctx.Status(200) } +func (c *HealthCheckController) checkFlag(ctx *gin.Context) { + + splitName := ctx.Request.URL.Query().Get("flag") + conn, err := transfer.NewClientConn(c.logger, &c.connParams.Transfer) + if conn != nil { + defer conn.Shutdown() + } + if err != nil { + ctx.AbortWithError(500, fmt.Errorf("error creating raw connection: %w", err)) + return + } + + serial, err := serializer.Setup(c.connParams.Serialization) + if err != nil { + ctx.AbortWithError(500, fmt.Errorf("error setting up serializer: %w", err)) + return + } + + rpcClient, err := client.New(c.logger, conn, serial, c.connParams.Consumer) + if err != nil { + ctx.AbortWithError(500, fmt.Errorf("error setting up client: %w", err)) + return + } + + result, err := rpcClient.Split(splitName) + if err != nil { + ctx.AbortWithError(500, fmt.Errorf("error issuing RPC: %w", err)) + return + } + + ctx.JSON(200, SplitViewDTO(*result)) +} + func NewHealthController(logger logging.LoggerInterface, connParams link.ConsumerOptions) *HealthCheckController { return &HealthCheckController{ connParams: connParams, diff --git a/splitio/commitsha.go b/splitio/commitsha.go index dc7d2ed..2e746e6 100644 --- a/splitio/commitsha.go +++ b/splitio/commitsha.go @@ -1,3 +1,3 @@ package splitio -const CommitSHA = "66886e2" +const CommitSHA = "9563f26"