diff --git a/src/main/java/org/gcube/data/access/connector/rest/GCubeRestClient.java b/src/main/java/org/gcube/data/access/connector/rest/GCubeRestClient.java index 86be178..f1a90f4 100644 --- a/src/main/java/org/gcube/data/access/connector/rest/GCubeRestClient.java +++ b/src/main/java/org/gcube/data/access/connector/rest/GCubeRestClient.java @@ -1,13 +1,22 @@ package org.gcube.data.access.connector.rest; +import java.util.Iterator; +import java.util.List; + import org.gcube.data.access.connector.rest.entity.AccessibleCredentialsEntity; +import org.gcube.data.access.connector.rest.entity.SDIEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import net.sf.json.JSONObject; public class GCubeRestClient { + + private static String CONTEXT_MANAGER = "CONTEXT_MANAGER"; + private static String CONTEXT_USER = "CONTEXT_USER"; private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -28,4 +37,36 @@ public class GCubeRestClient { } } + public AccessibleCredentialsEntity getGeneralAccessibleCredentials(String url, String host) { + + logger.warn("REST call to URL: " + url); + RestTemplate restTemplate = new RestTemplate(); + + try { + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, null, SDIEntity.class); + + String baseEndpoint = response.getBody().getGeonetworkConfiguration().getBaseEndpoint(); + AccessibleCredentialsEntity result = new AccessibleCredentialsEntity(); + + if (baseEndpoint.contains(host)){ + //get credentials from geonetworkConfiguration - to give priority on CONTEXT_MANAGER (if it exists), otherwise CONTEXT_USER + List credentials = response.getBody().getGeonetworkConfiguration().getAccessibleCredentials(); + Iterator iter = credentials.iterator(); + while (iter.hasNext()){ + AccessibleCredentialsEntity entity = iter.next(); + if (CONTEXT_MANAGER.equals(entity.getAccessType())){ + result = entity; + } + if ((result.getAccessType() == null) && CONTEXT_USER.equals(entity.getAccessType())){ + result = entity; + } + } + } + + return result; + } catch (Exception e) { + logger.error("Error in getGeneralAccessibleCredentials() method: " + e.getMessage()); + return new AccessibleCredentialsEntity(); + } + } }