diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cdc18b..8873b15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.spatial.data.ws-thredds +## [v0.2.6-SNAPSHOT] +Fixes #21265 + ## [v0.2.5] Fixes #21265 diff --git a/pom.xml b/pom.xml index d0d1c2e..407c1e6 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.gcube.spatial.data ws-thredds - 0.2.5 + 0.2.6-SNAPSHOT ws-thredds prototype of WS integration with data-transfer for Thredds pubblication diff --git a/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/CustomAuthorizationFilter.java b/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/CustomAuthorizationFilter.java new file mode 100644 index 0000000..dc534f2 --- /dev/null +++ b/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/CustomAuthorizationFilter.java @@ -0,0 +1,32 @@ +package org.gcube.usecases.ws.thredds.engine.impl; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map.Entry; + +import javax.ws.rs.client.ClientRequestContext; +import javax.ws.rs.client.ClientRequestFilter; + +import org.gcube.common.calls.Call; +import org.gcube.common.calls.Interceptors; +import org.gcube.common.calls.Request; +import org.gcube.data.transfer.library.utils.ScopeUtils; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class CustomAuthorizationFilter implements ClientRequestFilter { + + + @Override + public void filter(final ClientRequestContext rc) throws IOException { + if (ScopeUtils.getCurrentScope()!=null){ + Request requestContext = Interceptors.executeRequestChain(new Call()); + + for (Entry entry: requestContext.getHeaders()){ + log.debug("Copying HTTP request header {} : {}",entry.getKey(),entry.getValue()); + rc.getHeaders().put(entry.getKey(), Collections.singletonList((Object)entry.getValue())); + } + } + } +} diff --git a/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/ThreddsController.java b/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/ThreddsController.java index 30c46ce..efd3646 100644 --- a/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/ThreddsController.java +++ b/src/main/java/org/gcube/usecases/ws/thredds/engine/impl/ThreddsController.java @@ -23,7 +23,6 @@ import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.resources.gcore.GCoreEndpoint; import org.gcube.data.transfer.library.DataTransferClient; import org.gcube.data.transfer.library.TransferResult; -import org.gcube.data.transfer.library.client.AuthorizationFilter; import org.gcube.data.transfer.library.faults.DestinationNotSetException; import org.gcube.data.transfer.library.faults.FailedTransferException; import org.gcube.data.transfer.library.faults.InitializationException; @@ -338,7 +337,7 @@ public class ThreddsController { } private static Client getWebClient() { - return ClientBuilder.newClient(new ClientConfig().register(AuthorizationFilter.class)) + return ClientBuilder.newClient(new ClientConfig().register(CustomAuthorizationFilter.class)) .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); }