From 66381cf8d8773a475c48b71ebdcd029caa4fbea5 Mon Sep 17 00:00:00 2001
From: Thorsten Vitt <thorsten.vitt@uni-wuerzburg.de>
Date: Tue, 18 Jun 2013 11:16:53 +0000
Subject: [PATCH] Fixed Content-Disposition header.

Work around a problem in Android by removing the space inside the header
(after the ;). Additionally, we deliver EPUBs with ASCII safe names now

git-svn-id: https://develop.sub.uni-goettingen.de/repos/textgrid/trunk/services/aggregator@14161 7c539038-3410-0410-b1ec-0f2a7bf1c452
---
 .../info/textgrid/services/aggregator/RESTUtils.java     | 9 +++++++--
 .../info/textgrid/services/aggregator/epub/EPUB.java     | 5 ++---
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/main/java/info/textgrid/services/aggregator/RESTUtils.java b/src/main/java/info/textgrid/services/aggregator/RESTUtils.java
index d820c1a..cb4c886 100644
--- a/src/main/java/info/textgrid/services/aggregator/RESTUtils.java
+++ b/src/main/java/info/textgrid/services/aggregator/RESTUtils.java
@@ -9,8 +9,13 @@ public class RESTUtils {
 	public static ResponseBuilder addAttachmentFilename(final ResponseBuilder builder, final String fileName) {
 		final String asciiFileName = fileName.replaceAll("[^A-Za-z0-9.-]", "_");
 		final String extendedNameSpec = "UTF-8''" + UriBuilder.fromPath(fileName).build().toASCIIString();
-		builder.header("Content-Disposition", "attachment; filename*=\"" + extendedNameSpec + "\"; " +
-				/*		builder.header("Content-Disposition", */ " filename=\"" + asciiFileName + "\" " );
+		
+		if (!asciiFileName.equals(fileName))
+			builder.header("Content-Disposition", "attachment;filename*=\"" + extendedNameSpec + "\";" +
+				/*		builder.header("Content-Disposition", */ "filename=\"" + asciiFileName + "\"" );
+		else
+			builder.header("Content-Disposition", "attachment;filename=\"" + asciiFileName + "\"" );
+		builder.header("X-Attachment-Orig-Filename", fileName);
 		return builder;
 	}
 
diff --git a/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java b/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java
index 5117039..4547e4f 100644
--- a/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java
+++ b/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java
@@ -12,6 +12,7 @@
 import info.textgrid.services.aggregator.RESTUtils;
 import info.textgrid.services.aggregator.TextGridRepProvider;
 import info.textgrid.services.aggregator.teicorpus.TEICorpusSerializer;
+import info.textgrid.services.aggregator.tree.FilenamePolicy;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -163,11 +164,9 @@ public InputStream getInput() throws IOException {
 
 			return RESTUtils
 					.attachmentResponse(
-							rootObject.getGeneric().getProvided().getTitle()
-							.get(0)
+							FilenamePolicy.getTransliterator().transliterate(rootObject.getGeneric().getProvided().getTitle().get(0))
 							+ ".epub").type("application/epub+zip")
 							.entity(new EPUBSerializer(workingDir, repository, corpus)).build();
-
 		} catch (final FileNotFoundException e) {
 			throw new WebApplicationException(e);
 		} catch (final IOException e) {
-- 
GitLab