diff options
Diffstat (limited to 'vendor/github.com/labstack/echo/cookbook/subdomains')
-rw-r--r-- | vendor/github.com/labstack/echo/cookbook/subdomains/server.go | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/github.com/labstack/echo/cookbook/subdomains/server.go b/vendor/github.com/labstack/echo/cookbook/subdomains/server.go new file mode 100644 index 00000000..ef4f65f9 --- /dev/null +++ b/vendor/github.com/labstack/echo/cookbook/subdomains/server.go @@ -0,0 +1,78 @@ +package main + +import ( + "net/http" + + "github.com/labstack/echo" + "github.com/labstack/echo/middleware" +) + +type ( + Host struct { + Echo *echo.Echo + } +) + +func main() { + // Hosts + hosts := make(map[string]*Host) + + //----- + // API + //----- + + api := echo.New() + api.Use(middleware.Logger()) + api.Use(middleware.Recover()) + + hosts["api.localhost:1323"] = &Host{api} + + api.GET("/", func(c echo.Context) error { + return c.String(http.StatusOK, "API") + }) + + //------ + // Blog + //------ + + blog := echo.New() + blog.Use(middleware.Logger()) + blog.Use(middleware.Recover()) + + hosts["blog.localhost:1323"] = &Host{blog} + + blog.GET("/", func(c echo.Context) error { + return c.String(http.StatusOK, "Blog") + }) + + //--------- + // Website + //--------- + + site := echo.New() + site.Use(middleware.Logger()) + site.Use(middleware.Recover()) + + hosts["localhost:1323"] = &Host{site} + + site.GET("/", func(c echo.Context) error { + return c.String(http.StatusOK, "Website") + }) + + // Server + e := echo.New() + e.Any("/*", func(c echo.Context) (err error) { + req := c.Request() + res := c.Response() + host := hosts[req.Host] + + if host == nil { + err = echo.ErrNotFound + } else { + host.Echo.ServeHTTP(res, req) + } + + return + }) + e.Logger.Fatal(e.Start(":1323")) +} |