package dev.garrettmills.csx.matterlinkreboot; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; public class MatterbridgeAPIClient { // Directly reference a log4j logger. private static final Logger LOGGER = LogManager.getLogger(MatterlinkReboot.MOD_ID); private static final CloseableHttpClient http = HttpClients.createDefault(); public static final IncomingMessage[] NO_MESSAGES = {}; public static void close() throws IOException { http.close(); } public static IncomingMessage[] getMessages() { String url = MatterbridgeAPIClient.buildURL("messages"); HttpGet req = new HttpGet(url); try { CloseableHttpResponse res = http.execute(req); HttpEntity body = res.getEntity(); if ( body != null ) { String result = EntityUtils.toString(body); return IncomingMessage.fromStringArray(result); } } catch (Exception e) { LOGGER.error(e); } return NO_MESSAGES; } public static void sendMessage(OutgoingMessage message) { try { HttpPost post = new HttpPost(buildURL("message")); StringEntity body = new StringEntity(message.toJSON()); post.setHeader("Content-Type", "application/json"); post.setEntity(body); http.execute(post); } catch (Exception e) { LOGGER.error(e); } } public static String buildURL(String endpoint) { return MatterlinkRebootConfig.GENERAL.BridgeProtocol.get() + "://" + MatterlinkRebootConfig.GENERAL.BridgeHost.get() + ":" + MatterlinkRebootConfig.GENERAL.BridgePort.get() + "/api/" + endpoint; } }