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"));
+    }
 }