use of org.mycore.pi.exceptions.MCRDatacenterAuthenticationException in project mycore by MyCoRe-Org.
the class MCRDataciteClient method resolveDOI.
public URI resolveDOI(final MCRDigitalObjectIdentifier doiParam) throws MCRPersistentIdentifierException {
URI requestURI = getRequestURI("/doi/" + doiParam.asString());
HttpGet get = new HttpGet(requestURI);
try (CloseableHttpClient httpClient = getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(get);
HttpEntity entity = response.getEntity();
StatusLine statusLine = response.getStatusLine();
switch(statusLine.getStatusCode()) {
case HttpStatus.SC_OK:
Scanner scanner = new Scanner(entity.getContent(), "UTF-8");
String uriString = scanner.nextLine();
return new URI(uriString);
case HttpStatus.SC_NO_CONTENT:
throw new MCRIdentifierUnresolvableException(doiParam.asString(), "The identifier " + doiParam.asString() + " is currently not resolvable");
case HttpStatus.SC_NOT_FOUND:
throw new MCRIdentifierUnresolvableException(doiParam.asString(), "The identifier " + doiParam.asString() + " was not found in the Datacenter!");
case HttpStatus.SC_UNAUTHORIZED:
throw new MCRDatacenterAuthenticationException();
case HttpStatus.SC_INTERNAL_SERVER_ERROR:
throw new MCRDatacenterException(String.format(Locale.ENGLISH, "Datacenter error while resolving doi: \"%s\" : %s", doiParam.asString(), getStatusString(response)));
default:
throw new MCRDatacenterException(String.format(Locale.ENGLISH, "Unknown error while resolving doi: \"%s\" : %s", doiParam.asString(), getStatusString(response)));
}
} catch (IOException | URISyntaxException ex) {
throw new MCRDatacenterException(String.format(Locale.ENGLISH, "Unknown error while resolving doi: \"%s\"", doiParam.asString()), ex);
}
}
use of org.mycore.pi.exceptions.MCRDatacenterAuthenticationException in project mycore by MyCoRe-Org.
the class MCRDataciteClient method resolveMetadata.
public Document resolveMetadata(final MCRDigitalObjectIdentifier doiParam) throws MCRPersistentIdentifierException {
MCRDigitalObjectIdentifier doi = isTestPrefix() ? doiParam.toTestPrefix() : doiParam;
URI requestURI = getRequestURI("/metadata/" + doi.asString());
HttpGet get = new HttpGet(requestURI);
try (CloseableHttpClient httpClient = getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(get);
HttpEntity entity = response.getEntity();
StatusLine statusLine = response.getStatusLine();
switch(statusLine.getStatusCode()) {
case HttpStatus.SC_OK:
SAXBuilder builder = new SAXBuilder();
return builder.build(entity.getContent());
case HttpStatus.SC_UNAUTHORIZED:
throw new MCRDatacenterAuthenticationException();
case HttpStatus.SC_NO_CONTENT:
throw new MCRIdentifierUnresolvableException(doi.asString(), "The identifier " + doi.asString() + " is currently not resolvable");
case HttpStatus.SC_NOT_FOUND:
throw new MCRIdentifierUnresolvableException(doi.asString(), "The identifier " + doi.asString() + " was not found!");
case HttpStatus.SC_GONE:
throw new MCRIdentifierUnresolvableException(doi.asString(), "The identifier " + doi.asString() + " was deleted!");
default:
throw new MCRDatacenterException("Unknown return status: " + getStatusString(response));
}
} catch (IOException | JDOMException e) {
throw new MCRDatacenterException("Error while resolving metadata!", e);
}
}
Aggregations