Mercurial > hg > digilib
changeset 1651:03cc8daf39ea
8: Manifester Servlet creates wrong image-URLs with some
slash-replacement characters
Task-Url: http://github.com/robcast/digilib/issues/8
author | Robert Casties <casties@mpiwg-berlin.mpg.de> |
---|---|
date | Sun, 05 Nov 2017 21:04:51 +0100 |
parents | bfae6ac92fc9 |
children | f41cee9bc61b |
files | iiif-presentation/src/main/java/digilib/conf/ManifestServletConfiguration.java iiif-presentation/src/main/java/digilib/servlet/Manifester.java |
diffstat | 2 files changed, 28 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/iiif-presentation/src/main/java/digilib/conf/ManifestServletConfiguration.java Fri Oct 06 13:20:11 2017 +0200 +++ b/iiif-presentation/src/main/java/digilib/conf/ManifestServletConfiguration.java Sun Nov 05 21:04:51 2017 +0100 @@ -59,8 +59,14 @@ public ManifestServletConfiguration() { super(); + // base URL used in constructing IIIF manifests including servlet name and iiif-prefix (optional) + newParameter("iiif-manifest-base-url", null, null, 'f'); + // base URL used in constructing IIIF manifests including servlet name and iiif-prefix (optional) + newParameter("iiif-image-base-url", null, null, 'f'); + // web-application base URL used in constructing API paths (optional) + newParameter("webapp-base-url", null, null, 'f'); // Scaler servlet name used in constructing IIIF image API paths - newParameter("scaler-servlet-path", "Scaler", null, 'f'); + newParameter("scaler-servlet-name", "Scaler", null, 'f'); } /*
--- a/iiif-presentation/src/main/java/digilib/servlet/Manifester.java Fri Oct 06 13:20:11 2017 +0200 +++ b/iiif-presentation/src/main/java/digilib/servlet/Manifester.java Sun Nov 05 21:04:51 2017 +0100 @@ -125,7 +125,7 @@ // DocuDirCache instance dirCache = (DocuDirCache) dlConfig.getValue(DigilibServletConfiguration.DIR_CACHE_KEY); // Scaler path - scalerServletPath = dlConfig.getAsString("scaler-servlet-path"); + scalerServletPath = dlConfig.getAsString("scaler-servlet-name"); // IIIF path separator iiifPathSep = dlConfig.getAsString("iiif-slash-replacement"); // CORS for info requests @@ -256,17 +256,27 @@ } /* - * get manifest base URL + * configure base URLs for manifest */ - String url = request.getRequestURL().toString(); - // get base URL for Servlets - int srvPathLen = request.getServletPath().length() + request.getPathInfo().length(); - String servletBaseUrl = url.substring(0, url.length() - srvPathLen); - // manifest base URL - String baseurl = servletBaseUrl + request.getServletPath() + "/" + dlConfig.getAsString("iiif-prefix") + "/" + identifier; - - params.manifestUrl = baseurl; - params.imgApiUrl = servletBaseUrl +"/" + this.scalerServletPath + "/" + dlConfig.getAsString("iiif-prefix"); + params.imgApiUrl = dlConfig.getAsString("iiif-image-base-url"); + String manifestBaseUrl = dlConfig.getAsString("iiif-manifest-base-url"); + if ("".equals(params.imgApiUrl) || "".equals(manifestBaseUrl)) { + // try to figure out base URLs + String servletBaseUrl = dlConfig.getAsString("webapp-base-url"); + if ("".equals(servletBaseUrl)) { + String url = request.getRequestURL().toString(); + // get base URL for web application by last occurrence of Servlet path + int srvPathLen = url.lastIndexOf(request.getServletPath()); + servletBaseUrl = url.substring(0, srvPathLen); + } + // manifest base URL + manifestBaseUrl = servletBaseUrl + request.getServletPath() + "/" + dlConfig.getAsString("iiif-prefix"); + // Image API base URL + params.imgApiUrl = servletBaseUrl + "/" + this.scalerServletPath + "/" + + dlConfig.getAsString("iiif-prefix"); + } + // full manifest URL with identifier + params.manifestUrl = manifestBaseUrl + "/" + identifier; params.identifier = identifier; params.docuDir = dlDir;