You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2014/12/15 07:24:53 UTC
svn commit: r1645575 - in /tika/trunk/tika-server/src:
main/java/org/apache/tika/server/TikaResource.java
test/java/org/apache/tika/server/MetadataResourceTest.java
Author: nick
Date: Mon Dec 15 06:24:52 2014
New Revision: 1645575
URL: http://svn.apache.org/r1645575
Log:
TIKA-1494 Allow supplying a password on a per-request basis via the Password header
Modified:
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaResource.java
tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java
Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaResource.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaResource.java?rev=1645575&r1=1645574&r2=1645575&view=diff
==============================================================================
--- tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaResource.java (original)
+++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaResource.java Mon Dec 15 06:24:52 2014
@@ -36,6 +36,7 @@ import javax.xml.transform.TransformerCo
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -45,6 +46,7 @@ import java.lang.reflect.Field;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
+
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -62,6 +64,7 @@ import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
+import org.apache.tika.parser.PasswordProvider;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.parser.ocr.TesseractOCRConfig;
import org.apache.tika.parser.pdf.PDFParserConfig;
@@ -216,9 +219,14 @@ public static void fillMetadata(AutoDete
});
}
- String password = httpHeaders.getFirst("Password");
+ final String password = httpHeaders.getFirst("Password");
if (password != null) {
- // TODO
+ context.set(PasswordProvider.class, new PasswordProvider() {
+ @Override
+ public String getPassword(Metadata metadata) {
+ return password;
+ }
+ });
}
}
Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java?rev=1645575&r1=1645574&r2=1645575&view=diff
==============================================================================
--- tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java (original)
+++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java Mon Dec 15 06:24:52 2014
@@ -73,4 +73,42 @@ public class MetadataResourceTest extend
assertEquals("Maxim Valyanskiy", metadata.get("Author"));
}
+ @Test
+ public void testPasswordProtected() throws Exception {
+ Response response = WebClient
+ .create(endPoint + META_PATH)
+ .type("application/vnd.ms-excel")
+ .accept("text/csv")
+ .put(ClassLoader
+ .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
+
+ // Won't work, no password given
+ assertEquals(500, response.getStatus());
+
+ // Try again, this time with the password
+ response = WebClient
+ .create(endPoint + META_PATH)
+ .type("application/vnd.ms-excel")
+ .accept("text/csv")
+ .header("Password", "password")
+ .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
+
+ // Will work
+ assertEquals(200, response.getStatus());
+
+ // Check results
+ Reader reader = new InputStreamReader((InputStream) response.getEntity(), "UTF-8");
+ CSVReader csvReader = new CSVReader(reader);
+
+ Map<String, String> metadata = new HashMap<String, String>();
+
+ String[] nextLine;
+ while ((nextLine = csvReader.readNext()) != null) {
+ metadata.put(nextLine[0], nextLine[1]);
+ }
+ csvReader.close();
+
+ assertNotNull(metadata.get("Author"));
+ assertEquals("pavel", metadata.get("Author"));
+ }
}