org.dspace.external.OrcidRestConnector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dspace-api Show documentation
Show all versions of dspace-api Show documentation
DSpace core data model and service APIs.
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.external;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @author Antoine Snyers (antoine at atmire.com)
* @author Kevin Van de Velde (kevin at atmire dot com)
* @author Ben Bosman (ben at atmire dot com)
* @author Mark Diggory (markd at atmire dot com)
*/
public class OrcidRestConnector {
/**
* log4j logger
*/
private static final Logger log = LogManager.getLogger(OrcidRestConnector.class);
private final String url;
public OrcidRestConnector(String url) {
this.url = url;
}
public InputStream get(String path, String accessToken) {
HttpResponse getResponse = null;
InputStream result = null;
path = trimSlashes(path);
String fullPath = url + '/' + path;
HttpGet httpGet = new HttpGet(fullPath);
if (StringUtils.isNotBlank(accessToken)) {
httpGet.addHeader("Content-Type", "application/vnd.orcid+xml");
httpGet.addHeader("Authorization","Bearer " + accessToken);
}
try {
HttpClient httpClient = HttpClientBuilder.create().build();
getResponse = httpClient.execute(httpGet);
//do not close this httpClient
result = getResponse.getEntity().getContent();
} catch (Exception e) {
getGotError(e, fullPath);
}
return result;
}
protected void getGotError(Exception e, String fullPath) {
log.error("Error in rest connector for path: " + fullPath, e);
}
public static String trimSlashes(String path) {
while (path.endsWith("/")) {
path = path.substring(0, path.length() - 1);
}
while (path.startsWith("/")) {
path = path.substring(1);
}
return path;
}
public static String convertStreamToString(InputStream is) {
Scanner s = new Scanner(is, StandardCharsets.UTF_8).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy