pluginapi/src/main/java/xyz/etztech/core/web/CoreWeb.java

147 lines
5.7 KiB
Java

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");
/**
* @param plugin The calling plugin
* @param url The URL to call
* @param data A map of parameters
*/
public static void asyncGet(final Plugin plugin, final String url, final Map<String, String> data) {
schedule.runTaskAsynchronously(plugin, () -> {
ArrayList<String> 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 + ")");
}
});
}
/**
* @param plugin The calling plugin
* @param url The URL to call
* @param data A map of parameters
* @param callback A class implementing an ICallBack to run upon completion
* @see ICallback
*/
public static void asyncGetCallback(final Plugin plugin, final String url, final Map<String, String> data, final ICallback callback) {
schedule.runTaskAsynchronously(plugin, () -> {
StringBuilder result = new StringBuilder();
ArrayList<String> 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());
});
}
/**
* @param plugin The calling plugin
* @param url The URL to call
* @param data A map of parameters
*/
public static void asyncPost(final Plugin plugin, final String url, final Map<String, String> data) {
schedule.runTaskAsynchronously(plugin, () -> {
try {
HttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
List<NameValuePair> 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 + ")");
}
});
}
/**
* @param plugin The calling plugin
* @param url The URL to call
* @param data A map of parameters
* @param callback A class implementing an ICallBack to run upon completion
* @see ICallback
*/
public static void asyncPostCallback(final Plugin plugin, final String url, final Map<String, String> data, final ICallback callback) {
schedule.runTaskAsynchronously(plugin, () -> {
StringBuilder result = new StringBuilder();
try {
HttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
List<NameValuePair> 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());
});
}
}