Add config option to set source verbatim, e.g. when behind a proxy
Change-Id: Ibeae6f417c13c778d9f7bb29cd9d915dff312f43
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java b/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
index 62cf5c3..c779cc1 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
@@ -31,6 +31,7 @@
public void setCorpusQueryString (String s);
public String getSource ();
public void setSource (String h, String p);
+ public void setSource (String v);
public int getTotalResults ();
public boolean hasTimeExceeded ();
public void setMaxResults (int m);
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java b/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
index f2898a9..1f324f3 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
@@ -169,6 +169,14 @@
this.src = s.toString();
};
+
+ /**
+ * Set the source information verbose.
+ */
+ public void setSource (String src) {
+ this.src = src;
+ };
+
/**
* Get the source information.
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
index 0f5d4f1..9b509fc 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
@@ -60,7 +60,6 @@
* TODO for release:
* - Rename to "Kalamar-Plugin-Export".
* - Improve Readme.
- * - Add opaque source, in case source is an internal IP.
* - Add screenshot.
*
* TODO:
@@ -178,6 +177,7 @@
String port = prop.getProperty("api.port", "8089");
String host = prop.getProperty("api.host", "localhost");
String path = prop.getProperty("api.path", "");
+ String source = prop.getProperty("api.source");
int pageSize = Integer.parseInt(prop.getProperty("conf.page_size", "5"));
int maxResults = Integer.parseInt(prop.getProperty("conf.max_exp_limit", "10000"));
@@ -244,7 +244,10 @@
exp.setMaxResults(maxResults);
exp.setQueryString(q);
exp.setCorpusQueryString(cq);
- exp.setSource(host, path);
+ if (source != null)
+ exp.setSource(source);
+ else
+ exp.setSource(host, path);
// Set filename
if (fname != null)
diff --git a/src/main/resources/exportPlugin.conf b/src/main/resources/exportPlugin.conf
index a76c44d..fc64329 100644
--- a/src/main/resources/exportPlugin.conf
+++ b/src/main/resources/exportPlugin.conf
@@ -12,6 +12,10 @@
api.host=korap.ids-mannheim.de
api.scheme=https
+# Overwrite to set source to a string,
+# especially useful when run behind a proxy.
+# api.source = korap.ids-mannheim.de
+
# Asset Configuration
asset.host=korap.ids-mannheim.de
asset.scheme=https
diff --git a/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java b/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
index 00742a3..1dcceee 100644
--- a/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
@@ -12,6 +12,7 @@
import org.mockserver.junit.MockServerRule;
import static org.mockserver.model.HttpRequest.*;
import static org.mockserver.model.HttpResponse.*;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.slf4j.Logger;
@@ -87,11 +88,15 @@
// Unfortunately this means the tests can't run in parallel
mockServer = ClientAndServer.startClientAndServer(34765);
mockClient = new MockServerClient("localhost", mockServer.getPort());
+ }
+ @Before
+ public void resetProps () {
Properties properties = ExWSConf.properties(null);
properties.setProperty("api.host", "localhost");
properties.setProperty("api.port", String.valueOf(mockServer.getPort()));
properties.setProperty("api.scheme", "http");
+ properties.remove("api.source");
}
@AfterClass
@@ -277,6 +282,10 @@
@Test
public void testExportWsRTFcorpusQuery () {
+
+ Properties properties = ExWSConf.properties(null);
+ properties.setProperty("api.source", "my-server");
+
mockClient.reset().when(
request()
.withMethod("GET")
@@ -305,10 +314,11 @@
assertEquals("Request RTF: Http Response should be 200: ",
Status.OK.getStatusCode(), responsertf.getStatus());
String str = responsertf.readEntity(String.class);
-
assertTrue("Corpus info", str.contains("Corpus:"));
assertTrue("Corpus def", str.contains("corpusSigle = \"WPD17\""));
assertFalse("Errors", str.contains("dynCall("));
+ assertTrue("Source info", str.contains("Source:" + CELLSPLIT + "my-server"));
+
}
@Test