|
@@ -11,6 +11,7 @@ package fixture.geoip;
|
|
|
import com.sun.net.httpserver.HttpServer;
|
|
|
|
|
|
import java.io.BufferedWriter;
|
|
|
+import java.io.InputStream;
|
|
|
import java.io.OutputStream;
|
|
|
import java.io.OutputStreamWriter;
|
|
|
import java.net.InetAddress;
|
|
@@ -26,8 +27,9 @@ public class GeoIpHttpFixture {
|
|
|
this.server = HttpServer.create(new InetSocketAddress(InetAddress.getByName(args[0]), Integer.parseInt(args[1])), 0);
|
|
|
this.server.createContext("/", exchange -> {
|
|
|
String query = exchange.getRequestURI().getQuery();
|
|
|
- if (query.contains("elastic_geoip_service_tos=agree") == false) {
|
|
|
+ if (query == null || query.contains("elastic_geoip_service_tos=agree") == false) {
|
|
|
exchange.sendResponseHeaders(400, 0);
|
|
|
+ exchange.getResponseBody().close();
|
|
|
return;
|
|
|
}
|
|
|
String data = rawData.replace("endpoint", "http://" + exchange.getRequestHeaders().getFirst("Host"));
|
|
@@ -36,10 +38,12 @@ public class GeoIpHttpFixture {
|
|
|
writer.write(data);
|
|
|
}
|
|
|
});
|
|
|
- this.server.createContext("/db.mmdb.gz", exchange -> {
|
|
|
+ this.server.createContext("/db", exchange -> {
|
|
|
exchange.sendResponseHeaders(200, 0);
|
|
|
- try (OutputStream outputStream = exchange.getResponseBody()) {
|
|
|
- GeoIpHttpFixture.class.getResourceAsStream("/GeoIP2-City-Test.mmdb.gz").transferTo(outputStream);
|
|
|
+ String dbName = exchange.getRequestURI().getPath().replaceAll(".*/db", "");
|
|
|
+ try (OutputStream outputStream = exchange.getResponseBody();
|
|
|
+ InputStream db = GeoIpHttpFixture.class.getResourceAsStream(dbName)) {
|
|
|
+ db.transferTo(outputStream);
|
|
|
}
|
|
|
});
|
|
|
}
|