From dc8c37c81518450b5cf447a6faa5713908138f09 Mon Sep 17 00:00:00 2001 From: Radoslaw Krawczyk Date: Fri, 25 Jul 2025 14:08:40 +0200 Subject: [PATCH 1/5] OAS api versions performing fixes --- gateway/mw_version_check.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gateway/mw_version_check.go b/gateway/mw_version_check.go index d6edf0a148f..bae6e068995 100644 --- a/gateway/mw_version_check.go +++ b/gateway/mw_version_check.go @@ -89,8 +89,8 @@ func (v *VersionCheck) ProcessRequest(w http.ResponseWriter, r *http.Request, _ } } - v.Spec.SanitizeProxyPaths(r) - + new_listen_path := v.Spec.Proxy.ListenPath[:len(v.Spec.Proxy.ListenPath)-1] + "-" + targetVersion + r.URL.Path = new_listen_path + v.Spec.StripListenPath(r.URL.Path) handler.ServeHTTP(w, r) return nil, middleware.StatusRespond } From d4d0f57c56db6cb97e7e9f5c92737476897df195 Mon Sep 17 00:00:00 2001 From: Radoslaw Krawczyk Date: Mon, 28 Jul 2025 12:41:04 +0200 Subject: [PATCH 2/5] if condifion for classic api --- gateway/mw_version_check.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gateway/mw_version_check.go b/gateway/mw_version_check.go index bae6e068995..a73e623712b 100644 --- a/gateway/mw_version_check.go +++ b/gateway/mw_version_check.go @@ -89,8 +89,13 @@ func (v *VersionCheck) ProcessRequest(w http.ResponseWriter, r *http.Request, _ } } - new_listen_path := v.Spec.Proxy.ListenPath[:len(v.Spec.Proxy.ListenPath)-1] + "-" + targetVersion - r.URL.Path = new_listen_path + v.Spec.StripListenPath(r.URL.Path) + if v.Spec.IsOAS { + new_listen_path := v.Spec.Proxy.ListenPath[:len(v.Spec.Proxy.ListenPath)-1] + "-" + targetVersion + r.URL.Path = new_listen_path + v.Spec.StripListenPath(r.URL.Path) + } else { + v.Spec.SanitizeProxyPaths(r) + } + handler.ServeHTTP(w, r) return nil, middleware.StatusRespond } From 848b2db4571ee0ac78bf87c9558efb92fcec8896 Mon Sep 17 00:00:00 2001 From: Radoslaw Krawczyk Date: Tue, 29 Jul 2025 11:03:01 +0200 Subject: [PATCH 3/5] fixes --- gateway/mw_version_check.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gateway/mw_version_check.go b/gateway/mw_version_check.go index a73e623712b..55d7867d068 100644 --- a/gateway/mw_version_check.go +++ b/gateway/mw_version_check.go @@ -2,11 +2,11 @@ package gateway import ( "errors" + "github.com/getkin/kin-openapi/routers" "net/http" + "net/url" "time" - "github.com/getkin/kin-openapi/routers" - "github.com/TykTechnologies/tyk/apidef" "github.com/TykTechnologies/tyk/apidef/oas" "github.com/TykTechnologies/tyk/internal/middleware" @@ -90,8 +90,14 @@ func (v *VersionCheck) ProcessRequest(w http.ResponseWriter, r *http.Request, _ } if v.Spec.IsOAS { - new_listen_path := v.Spec.Proxy.ListenPath[:len(v.Spec.Proxy.ListenPath)-1] + "-" + targetVersion - r.URL.Path = new_listen_path + v.Spec.StripListenPath(r.URL.Path) + target_api := v.Gw.apisByID[subVersionID] + stripped_path := v.Spec.StripListenPath(r.URL.Path) + new_path, err := url.JoinPath(target_api.Proxy.ListenPath, stripped_path) + if err != nil { + log.Errorf("Url Join Error, err: %s", err) + return errors.New(http.StatusText(http.StatusInternalServerError)), http.StatusInternalServerError + } + r.URL.Path = new_path } else { v.Spec.SanitizeProxyPaths(r) } From af51ff45e809be1c5c3d99067de8a9c9b5fd7020 Mon Sep 17 00:00:00 2001 From: Radoslaw Krawczyk Date: Mon, 4 Aug 2025 09:26:34 +0200 Subject: [PATCH 4/5] cleanup --- gateway/mw_version_check.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gateway/mw_version_check.go b/gateway/mw_version_check.go index 55d7867d068..cce641f3906 100644 --- a/gateway/mw_version_check.go +++ b/gateway/mw_version_check.go @@ -2,11 +2,10 @@ package gateway import ( "errors" - "github.com/getkin/kin-openapi/routers" "net/http" "net/url" "time" - + "github.com/getkin/kin-openapi/routers" "github.com/TykTechnologies/tyk/apidef" "github.com/TykTechnologies/tyk/apidef/oas" "github.com/TykTechnologies/tyk/internal/middleware" @@ -90,14 +89,18 @@ func (v *VersionCheck) ProcessRequest(w http.ResponseWriter, r *http.Request, _ } if v.Spec.IsOAS { - target_api := v.Gw.apisByID[subVersionID] - stripped_path := v.Spec.StripListenPath(r.URL.Path) - new_path, err := url.JoinPath(target_api.Proxy.ListenPath, stripped_path) + targetApi, ok := v.Gw.apisByID[subVersionID] + + if !ok { + return errors.New(string(VersionDoesNotExist)), http.StatusNotFound + } + + strippedPath := v.Spec.StripListenPath(r.URL.Path) + newPath, err := url.JoinPath(targetApi.Proxy.ListenPath, strippedPath) if err != nil { - log.Errorf("Url Join Error, err: %s", err) - return errors.New(http.StatusText(http.StatusInternalServerError)), http.StatusInternalServerError + return err, http.StatusInternalServerError } - r.URL.Path = new_path + r.URL.Path = newPath } else { v.Spec.SanitizeProxyPaths(r) } From ab0427e2f33d84e8a34990be5b0683afc7c44500 Mon Sep 17 00:00:00 2001 From: Radoslaw Krawczyk Date: Mon, 4 Aug 2025 09:29:59 +0200 Subject: [PATCH 5/5] cleanup --- gateway/mw_version_check.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gateway/mw_version_check.go b/gateway/mw_version_check.go index cce641f3906..59362e973c7 100644 --- a/gateway/mw_version_check.go +++ b/gateway/mw_version_check.go @@ -5,7 +5,9 @@ import ( "net/http" "net/url" "time" + "github.com/getkin/kin-openapi/routers" + "github.com/TykTechnologies/tyk/apidef" "github.com/TykTechnologies/tyk/apidef/oas" "github.com/TykTechnologies/tyk/internal/middleware"