summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/labstack/echo/middleware/cors.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2019-01-31 17:06:36 +0100
committerWim <wim@42.be>2019-01-31 17:06:36 +0100
commitc81c0dd22a7779148c4890cfd4bbf490054f06f1 (patch)
tree06ce6fcdc8f3a2278a2f3050ba42088dd2e64485 /vendor/github.com/labstack/echo/middleware/cors.go
parentf8a1ab4622a5b833282e9ee42f382451d17c1a06 (diff)
downloadmatterbridge-msglm-c81c0dd22a7779148c4890cfd4bbf490054f06f1.tar.gz
matterbridge-msglm-c81c0dd22a7779148c4890cfd4bbf490054f06f1.tar.bz2
matterbridge-msglm-c81c0dd22a7779148c4890cfd4bbf490054f06f1.zip
Update vendor, move to labstack/echo/v4 Fixes #698
Diffstat (limited to 'vendor/github.com/labstack/echo/middleware/cors.go')
-rw-r--r--vendor/github.com/labstack/echo/middleware/cors.go139
1 files changed, 0 insertions, 139 deletions
diff --git a/vendor/github.com/labstack/echo/middleware/cors.go b/vendor/github.com/labstack/echo/middleware/cors.go
deleted file mode 100644
index 771000a5..00000000
--- a/vendor/github.com/labstack/echo/middleware/cors.go
+++ /dev/null
@@ -1,139 +0,0 @@
-package middleware
-
-import (
- "net/http"
- "strconv"
- "strings"
-
- "github.com/labstack/echo"
-)
-
-type (
- // CORSConfig defines the config for CORS middleware.
- CORSConfig struct {
- // Skipper defines a function to skip middleware.
- Skipper Skipper
-
- // AllowOrigin defines a list of origins that may access the resource.
- // Optional. Default value []string{"*"}.
- AllowOrigins []string `yaml:"allow_origins"`
-
- // AllowMethods defines a list methods allowed when accessing the resource.
- // This is used in response to a preflight request.
- // Optional. Default value DefaultCORSConfig.AllowMethods.
- AllowMethods []string `yaml:"allow_methods"`
-
- // AllowHeaders defines a list of request headers that can be used when
- // making the actual request. This in response to a preflight request.
- // Optional. Default value []string{}.
- AllowHeaders []string `yaml:"allow_headers"`
-
- // AllowCredentials indicates whether or not the response to the request
- // can be exposed when the credentials flag is true. When used as part of
- // a response to a preflight request, this indicates whether or not the
- // actual request can be made using credentials.
- // Optional. Default value false.
- AllowCredentials bool `yaml:"allow_credentials"`
-
- // ExposeHeaders defines a whitelist headers that clients are allowed to
- // access.
- // Optional. Default value []string{}.
- ExposeHeaders []string `yaml:"expose_headers"`
-
- // MaxAge indicates how long (in seconds) the results of a preflight request
- // can be cached.
- // Optional. Default value 0.
- MaxAge int `yaml:"max_age"`
- }
-)
-
-var (
- // DefaultCORSConfig is the default CORS middleware config.
- DefaultCORSConfig = CORSConfig{
- Skipper: DefaultSkipper,
- AllowOrigins: []string{"*"},
- AllowMethods: []string{echo.GET, echo.HEAD, echo.PUT, echo.PATCH, echo.POST, echo.DELETE},
- }
-)
-
-// CORS returns a Cross-Origin Resource Sharing (CORS) middleware.
-// See: https://developer.mozilla.org/en/docs/Web/HTTP/Access_control_CORS
-func CORS() echo.MiddlewareFunc {
- return CORSWithConfig(DefaultCORSConfig)
-}
-
-// CORSWithConfig returns a CORS middleware with config.
-// See: `CORS()`.
-func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
- // Defaults
- if config.Skipper == nil {
- config.Skipper = DefaultCORSConfig.Skipper
- }
- if len(config.AllowOrigins) == 0 {
- config.AllowOrigins = DefaultCORSConfig.AllowOrigins
- }
- if len(config.AllowMethods) == 0 {
- config.AllowMethods = DefaultCORSConfig.AllowMethods
- }
-
- allowMethods := strings.Join(config.AllowMethods, ",")
- allowHeaders := strings.Join(config.AllowHeaders, ",")
- exposeHeaders := strings.Join(config.ExposeHeaders, ",")
- maxAge := strconv.Itoa(config.MaxAge)
-
- return func(next echo.HandlerFunc) echo.HandlerFunc {
- return func(c echo.Context) error {
- if config.Skipper(c) {
- return next(c)
- }
-
- req := c.Request()
- res := c.Response()
- origin := req.Header.Get(echo.HeaderOrigin)
- allowOrigin := ""
-
- // Check allowed origins
- for _, o := range config.AllowOrigins {
- if o == "*" || o == origin {
- allowOrigin = o
- break
- }
- }
-
- // Simple request
- if req.Method != echo.OPTIONS {
- res.Header().Add(echo.HeaderVary, echo.HeaderOrigin)
- res.Header().Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
- if config.AllowCredentials {
- res.Header().Set(echo.HeaderAccessControlAllowCredentials, "true")
- }
- if exposeHeaders != "" {
- res.Header().Set(echo.HeaderAccessControlExposeHeaders, exposeHeaders)
- }
- return next(c)
- }
-
- // Preflight request
- res.Header().Add(echo.HeaderVary, echo.HeaderOrigin)
- res.Header().Add(echo.HeaderVary, echo.HeaderAccessControlRequestMethod)
- res.Header().Add(echo.HeaderVary, echo.HeaderAccessControlRequestHeaders)
- res.Header().Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
- res.Header().Set(echo.HeaderAccessControlAllowMethods, allowMethods)
- if config.AllowCredentials {
- res.Header().Set(echo.HeaderAccessControlAllowCredentials, "true")
- }
- if allowHeaders != "" {
- res.Header().Set(echo.HeaderAccessControlAllowHeaders, allowHeaders)
- } else {
- h := req.Header.Get(echo.HeaderAccessControlRequestHeaders)
- if h != "" {
- res.Header().Set(echo.HeaderAccessControlAllowHeaders, h)
- }
- }
- if config.MaxAge > 0 {
- res.Header().Set(echo.HeaderAccessControlMaxAge, maxAge)
- }
- return c.NoContent(http.StatusNoContent)
- }
- }
-}