Plugins: Modify interface for plugin validations to allow taking PDC into account (#96089)
* Request interceptor: Do not block PDC * Apply change after feedback received * Add test * Check if secure socks proxy configured for the instance * Apply suggestions from code review * Add dedicated service for datasource request URL validation (#99179) --------- Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
This commit is contained in:
co-authored by
Will Browne
parent
33a53d170b
commit
d192a44469
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
const HostRedirectValidationMiddlewareName = "host-redirect-validation"
|
||||
|
||||
func RedirectLimitMiddleware(reqValidator validations.PluginRequestValidator) sdkhttpclient.Middleware {
|
||||
func RedirectLimitMiddleware(reqValidator validations.DataSourceRequestURLValidator) sdkhttpclient.Middleware {
|
||||
return sdkhttpclient.NamedMiddlewareFunc(HostRedirectValidationMiddlewareName, func(opts sdkhttpclient.Options, next http.RoundTripper) http.RoundTripper {
|
||||
return sdkhttpclient.RoundTripperFunc(func(req *http.Request) (*http.Response, error) {
|
||||
res, err := next.RoundTrip(req)
|
||||
@@ -27,7 +27,7 @@ func RedirectLimitMiddleware(reqValidator validations.PluginRequestValidator) sd
|
||||
return nil, locationErr
|
||||
}
|
||||
|
||||
if validationErr := reqValidator.Validate(location.String(), nil); validationErr != nil {
|
||||
if validationErr := reqValidator.Validate(location.String()); validationErr != nil {
|
||||
return nil, validationErr
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
var newProviderFunc = sdkhttpclient.NewProvider
|
||||
|
||||
// New creates a new HTTP client provider with pre-configured middlewares.
|
||||
func New(cfg *setting.Cfg, validator validations.PluginRequestValidator, tracer tracing.Tracer) *sdkhttpclient.Provider {
|
||||
func New(cfg *setting.Cfg, validator validations.DataSourceRequestURLValidator, tracer tracing.Tracer) *sdkhttpclient.Provider {
|
||||
logger := log.New("httpclient")
|
||||
|
||||
middlewares := []sdkhttpclient.Middleware{
|
||||
|
||||
@@ -24,7 +24,7 @@ func TestHTTPClientProvider(t *testing.T) {
|
||||
newProviderFunc = origNewProviderFunc
|
||||
})
|
||||
tracer := tracing.InitializeTracerForTest()
|
||||
_ = New(&setting.Cfg{SigV4AuthEnabled: false}, &validations.OSSPluginRequestValidator{}, tracer)
|
||||
_ = New(&setting.Cfg{SigV4AuthEnabled: false}, &validations.OSSDataSourceRequestURLValidator{}, tracer)
|
||||
require.Len(t, providerOpts, 1)
|
||||
o := providerOpts[0]
|
||||
require.Len(t, o.Middlewares, 9)
|
||||
@@ -50,7 +50,7 @@ func TestHTTPClientProvider(t *testing.T) {
|
||||
newProviderFunc = origNewProviderFunc
|
||||
})
|
||||
tracer := tracing.InitializeTracerForTest()
|
||||
_ = New(&setting.Cfg{SigV4AuthEnabled: true}, &validations.OSSPluginRequestValidator{}, tracer)
|
||||
_ = New(&setting.Cfg{SigV4AuthEnabled: true}, &validations.OSSDataSourceRequestURLValidator{}, tracer)
|
||||
require.Len(t, providerOpts, 1)
|
||||
o := providerOpts[0]
|
||||
require.Len(t, o.Middlewares, 10)
|
||||
@@ -77,7 +77,7 @@ func TestHTTPClientProvider(t *testing.T) {
|
||||
newProviderFunc = origNewProviderFunc
|
||||
})
|
||||
tracer := tracing.InitializeTracerForTest()
|
||||
_ = New(&setting.Cfg{PluginSettings: setting.PluginSettings{"example": {"har_log_enabled": "true"}}}, &validations.OSSPluginRequestValidator{}, tracer)
|
||||
_ = New(&setting.Cfg{PluginSettings: setting.PluginSettings{"example": {"har_log_enabled": "true"}}}, &validations.OSSDataSourceRequestURLValidator{}, tracer)
|
||||
require.Len(t, providerOpts, 1)
|
||||
o := providerOpts[0]
|
||||
require.Len(t, o.Middlewares, 10)
|
||||
|
||||
Reference in New Issue
Block a user