147 lines
5.7 KiB
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());
|
|
});
|
|
}
|
|
}
|