Skip to content

Commit

Permalink
feat: add forwarding
Browse files Browse the repository at this point in the history
  • Loading branch information
moshloop committed Jan 24, 2022
1 parent 7d14912 commit c8e65d9
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 15 deletions.
23 changes: 23 additions & 0 deletions api/types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package api

type Incident struct {
}

type Comment struct {
}

type Hypothesis struct {
}

type Responder struct {
}

type IncidentResponders struct {
}

type Person struct {
Name string `json:"name,omitempty"`
Email string
Avatar string
Role string
}
4 changes: 4 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,17 @@ var Root = &cobra.Command{
var dev bool
var httpPort, metricsPort, devGuiPort int
var publicEndpoint = "http://localhost:8080"
var apmHub, configDb, canaryChecker string

func ServerFlags(flags *pflag.FlagSet) {
flags.IntVar(&httpPort, "httpPort", 8080, "Port to expose a health dashboard ")
flags.IntVar(&devGuiPort, "devGuiPort", 3004, "Port used by a local npm server in development mode")
flags.IntVar(&metricsPort, "metricsPort", 8081, "Port to expose a health dashboard ")
flags.BoolVar(&dev, "dev", false, "Run in development mode")
flags.StringVar(&publicEndpoint, "public-endpoint", "http://localhost:8080", "Public endpoint that this instance is exposed under")
flags.StringVar(&apmHub, "apm-hub", "apm-hub", "APM Hub URL")
flags.StringVar(&configDb, "config-db", "config-db", "Config DB URL")
flags.StringVar(&canaryChecker, "canary-checker", "canary-checker", "Canary Checker URL")
}

func init() {
Expand Down
37 changes: 22 additions & 15 deletions cmd/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,29 +26,36 @@ var Serve = &cobra.Command{
db.HttpEndpoint = publicEndpoint + "/db"
go db.StartPostgrest()

url, err := url.Parse("http://localhost:3000")
if err != nil {
e.Logger.Fatal(err)
}

e.Use(middleware.Logger())

e.Group("/db").Use(middleware.ProxyWithConfig(middleware.ProxyConfig{
Rewrite: map[string]string{
"^/db/*": "/$1",
},
Balancer: middleware.NewRoundRobinBalancer([]*middleware.ProxyTarget{
{
URL: url,
},
}),
}))
forward(e, "/db", "http://localhost:3000")
forward(e, "/config", configDb)
forward(e, "/canary", canaryChecker)
forward(e, "/apm", apmHub)

if err := e.Start(fmt.Sprintf(":%d", httpPort)); err != nil {
e.Logger.Fatal(err)
}
},
}

func forward(e *echo.Echo, prefix string, target string) {
_url, err := url.Parse(target)
if err != nil {
e.Logger.Fatal(err)
}
e.Group(prefix).Use(middleware.ProxyWithConfig(middleware.ProxyConfig{
Rewrite: map[string]string{
fmt.Sprintf("^%s/*", prefix): "/$1",
},
Balancer: middleware.NewRoundRobinBalancer([]*middleware.ProxyTarget{
{
URL: _url,
},
}),
}))
}

func init() {
ServerFlags(Serve.Flags())
}

0 comments on commit c8e65d9

Please sign in to comment.