Skip to content
Snippets Groups Projects
Commit 42b5fed7 authored by bourgesl's avatar bourgesl
Browse files

use HEAD for binary files (dataAccess URL)

parent 150193cc
No related branches found
No related tags found
No related merge requests found
......@@ -91,13 +91,13 @@ public final class ProcessUrlPipeline extends AbstractPipeline<PipelineCommonDat
if (dataAccessUrl == null) {
doiData.addError("Missing data access url");
} else {
checkUrl(doiData, dataAccessUrl);
checkUrl(doiData, dataAccessUrl, true);
}
// Get external Landing page URL:
final String landingPageExtUrl = projectConfig.getUrlLandingPage(doiSuffix);
if (landingPageExtUrl != null) {
checkUrl(doiData, landingPageExtUrl);
checkUrl(doiData, landingPageExtUrl, false);
logger.debug("landingPageUrl: {}", landingPageExtUrl);
}
......@@ -113,12 +113,12 @@ public final class ProcessUrlPipeline extends AbstractPipeline<PipelineCommonDat
logger.info("processUrls: done");
}
private void checkUrl(final PipelineCommonDoiData doiData, final String url) {
private void checkUrl(final PipelineCommonDoiData doiData, final String url, final boolean binary) {
logger.debug("checkUrl: {}", url);
Integer check = checkUrlCache.get(url);
if (check == null) {
final String doc = doiConfig.getUrlChecker().getResource(url);
final String doc = doiConfig.getUrlChecker().getResource(url, binary);
check = checkDocument(doc);
checkUrlCache.put(url, check);
}
......
......@@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestClientException;
/**
......@@ -38,16 +39,30 @@ public class UrlChecker {
200 OK - operation successful
@param url resource to load
@return
@param headOnly true to only retrieve content-type
@return resource as string or Content-Type header if headOnly is true
*/
public String getResource(final String url) {
public String getResource(final String url, final boolean headOnly) {
// Note: url must not be encoded (%)
if (url.contains("%")) {
logger.info("Url is encoded (may cause problem with HTTP request) : {}", url);
}
String response = null;
try {
response = this.restTemplate.getForObject(url, String.class);
logger.debug("getResource: {}", url);
if (headOnly) {
final HttpHeaders headers = this.restTemplate.headForHeaders(url);
if (headers != null) {
if (logger.isDebugEnabled()) {
logger.debug("headers: {}", headers.values());
}
response = headers.getContentType().toString();
}
} else {
response = this.restTemplate.getForObject(url, String.class);
}
} catch (RestClientException rce) {
logger.error("getResource: failed", rce);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment