From 25262352bd18444154e6a046def1103d26a87f29 Mon Sep 17 00:00:00 2001 From: "pasquale.vitale" Date: Tue, 19 Sep 2017 09:47:51 +0000 Subject: [PATCH] Add new method to get generic accesibleCredentials git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-access/gcube-geonetwork-connector@153237 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../connector/rest/GCubeRestClient.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) 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(); + } + } }