diff --git a/README.md b/README.md index 567719a..f28a5b2 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ services: - "8000:8000" volumes: - "./mock:/mock" + environment: + - ORIGIN_ALLOWED=http://localhost:9000 ``` ``` diff --git a/pkg/api/api.go b/pkg/api/api.go index 22f22dd..eaed750 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -5,9 +5,11 @@ import ( "github.com/gorilla/handlers" "github.com/gorilla/mux" "github.com/prongbang/wiremock/v2/pkg/config" + "github.com/prongbang/wiremock/v2/pkg/core" "github.com/prongbang/wiremock/v2/pkg/status" "log" "net/http" + "os" ) type API interface { @@ -23,8 +25,13 @@ func (a *api) Register(cfg config.Config) { r := mux.NewRouter() headers := handlers.AllowedHeaders([]string{"*"}) - methods := handlers.AllowedMethods([]string{http.MethodGet, http.MethodPost, http.MethodHead, http.MethodPut, http.MethodPatch, http.MethodTrace, http.MethodDelete, http.MethodOptions}) - origins := handlers.AllowedOrigins([]string{"*"}) + methods := handlers.AllowedMethods([]string{http.MethodGet, http.MethodPost, http.MethodHead, http.MethodPut, http.MethodPatch, http.MethodTrace, http.MethodDelete, http.MethodOptions, http.MethodConnect}) + originsAllowed := os.Getenv("ORIGIN_ALLOWED") + allowedOrigins := []string{"*"} + if originsAllowed != "" { + allowedOrigins = append(allowedOrigins, core.ParseOrigins(originsAllowed)...) + } + origins := handlers.AllowedOrigins(allowedOrigins) // Router a.Router.Initials(r) diff --git a/pkg/core/request.go b/pkg/core/request.go index 6e85fa0..e2a1e63 100644 --- a/pkg/core/request.go +++ b/pkg/core/request.go @@ -3,6 +3,7 @@ package core import ( "encoding/json" "net/http" + "strings" ) func Body(r *http.Request) map[string]interface{} { @@ -59,3 +60,15 @@ func BindCaseBody(mockBody map[string]interface{}, r *http.Request) map[string]i } return data } + +func ParseOrigins(originAllowed string) []string { + origins := []string{} + if originAllowed != "" { + originList := strings.Split(originAllowed, ",") + for _, origin := range originList { + trimmedOrigin := strings.TrimSpace(origin) + origins = append(origins, trimmedOrigin) + } + } + return origins +}