Skip to content

Instantly share code, notes, and snippets.

@stasikos
Created March 6, 2018 18:34
Show Gist options
  • Save stasikos/e8d9febde075dc44cf30382523b42074 to your computer and use it in GitHub Desktop.
Save stasikos/e8d9febde075dc44cf30382523b42074 to your computer and use it in GitHub Desktop.
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.TimeUnit;
/**
* Dumps data from "browser map" in war thunder into csv-like output (on standard output)
* @author DoNotRemember <stasikos@gmail.com>
*/
public class WTDumper {
private static JsonFactory jsonFactory = new JsonFactory();
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws MalformedURLException, InterruptedException, IOException {
// TODO code application logic here
String stat = "http://localhost:8111/state";
String indicators = "http://localhost:8111/indicators";
boolean header = true;
Map<String, String> data = new TreeMap<>();
while (true) {
requestData(stat, data);
requestData(indicators, data);
// Filter some stuff I don't need.
data.remove("trimmer");
data.remove("valid");
data.remove("altitude_min");
data.remove("altitude_min");
data.remove("rpm_min");
data.remove("vario");
data.remove("weapon1");
data.remove("weapon2");
data.remove("weapon3");
printData(data, header);
header = false;
TimeUnit.SECONDS.sleep(1);
}
}
/**
* get JSON data from url, fill data map and return milliseconds spent
*
* @param urlString
* @param data
* @return
*/
public static long requestData(String urlString, Map<String, String> data) throws IOException, InterruptedException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder content = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
content.append(line);
}
// System.out.println(content);
reader.close();
JsonParser parser = jsonFactory.createJsonParser(content.toString());
while (!parser.isClosed()) {
JsonToken token = parser.nextToken();
if (JsonToken.FIELD_NAME.equals(token)) {
String name = parser.getCurrentName();
token = parser.nextToken();
data.put(name, parser.getText());
}
}
return 0;
}
private static void printData(Map<String, String> data, boolean header) {
if (header) {
StringBuilder headerStr = new StringBuilder();
for (Map.Entry<String, String> entry : data.entrySet()) {
headerStr.append("\"").append(entry.getKey()).append("\",");
}
header = false;
System.out.println(headerStr);
}
StringBuilder dataStr = new StringBuilder();
for (Map.Entry<String, String> entry : data.entrySet()) {
dataStr.append(entry.getValue() + ",");
}
System.out.println(dataStr);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment