package xyz.etztech.core.web; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitScheduler; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.logging.Logger; public class CoreWeb { private static final BukkitScheduler schedule = Bukkit.getScheduler(); private static final Logger logger = Logger.getLogger("Minecraft"); public static void asyncGet(final Plugin plugin, final String url, final Map data) { schedule.runTaskAsynchronously(plugin, () -> { ArrayList query = new ArrayList<>(); for (String key : data.keySet()) { query.add(key + "=" + data.get(key)); } String dataQuery = StringUtils.join(query, "&"); try { HttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet(url + "?" + dataQuery); client.execute(get); } catch (Exception ex) { logger.warning("GET request failed. (" + url + ")"); } }); } public static void asyncGetCallback(final Plugin plugin, final String url, final Map data, final ICallback callback) { schedule.runTaskAsynchronously(plugin, () -> { StringBuilder result = new StringBuilder(); ArrayList query = new ArrayList<>(); for (String key : data.keySet()) { query.add(key + "=" + data.get(key)); } String dataQuery = StringUtils.join(query, "&"); try { HttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet(url + "?" + dataQuery); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); InputStream input = entity.getContent(); BufferedReader in = new BufferedReader(new InputStreamReader(input)); String inputLine; while ((inputLine = in.readLine()) != null) { result.append(inputLine); } input.close(); } catch (Exception ex) { logger.warning("GET request failed. (" + url + ")"); } callback.invoke(result.toString()); }); } public static void asyncPost(final Plugin plugin, final String url, final Map data) { schedule.runTaskAsynchronously(plugin, () -> { try { HttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(url); List params = new ArrayList<>(); for (String key : data.keySet()) { params.add(new BasicNameValuePair(key, data.get(key))); } post.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); client.execute(post); } catch (Exception ex) { logger.warning("POST request failed. (" + url + ")"); } }); } public static void asyncPostCallback(final Plugin plugin, final String url, final Map data, final ICallback callback) { schedule.runTaskAsynchronously(plugin, () -> { StringBuilder result = new StringBuilder(); try { HttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(url); List params = new ArrayList<>(); for (String key : data.keySet()) { params.add(new BasicNameValuePair(key, data.get(key))); } post.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); HttpResponse response = client.execute(post); HttpEntity entity = response.getEntity(); InputStream input = entity.getContent(); BufferedReader in = new BufferedReader(new InputStreamReader(input)); String inputLine; while ((inputLine = in.readLine()) != null) { result.append(inputLine); } input.close(); } catch (Exception ex) { logger.warning("POST request failed. (" + url + ")"); } callback.invoke(result.toString()); }); } }