package net.buycraft.plugin.shared.util; import com.google.gson.Gson; import lombok.experimental.UtilityClass; import net.buycraft.plugin.IBuycraftPlatform; import okhttp3.*; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; @UtilityClass public class AnalyticsSend { public static void sendAnalytics(OkHttpClient client, String secret, Map<String, Object> info) throws IOException { Response response = client.newCall(new Request.Builder() .url("https://plugin.buycraft.net/analytics/startup") .post(RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(info))) .header("X-Buycraft-Secret", secret) .build()).execute(); try (ResponseBody body = response.body()) { if (response.code() != 201) { throw new IOException("Error whilst sending analytics (" + response.code() + "): " + body.string()); } } } public static void postServerInformation(OkHttpClient client, String serverKey, IBuycraftPlatform platform, boolean onlineMode) throws IOException { Map<String, Object> serverData = new LinkedHashMap<>(); Map<String, Object> pluginData = new LinkedHashMap<>(); // Server data serverData.put("platform", platform.getPlatformInformation().getType().platformName()); serverData.put("platform_version", platform.getPlatformInformation().getVersion()); serverData.put("online_mode", onlineMode); // Plugin data pluginData.put("version", platform.getPluginVersion()); // Combine and send to Buycraft Map<String, Object> keenData = new LinkedHashMap<>(); keenData.put("server", serverData); keenData.put("plugin", pluginData); AnalyticsSend.sendAnalytics(client, serverKey, keenData); } }