package net.minecraft.util; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.Proxy; import java.net.URL; import java.net.URLEncoder; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; import net.minecraft.server.MinecraftServer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class HttpUtil { public static final ListeningExecutorService field_180193_a = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool((new ThreadFactoryBuilder()).setDaemon(true).setNameFormat("Downloader %d").build())); /** The number of download threads that we have started so far. */ private static final AtomicInteger downloadThreadsStarted = new AtomicInteger(0); private static final Logger logger = LogManager.getLogger(); private static final String __OBFID = "CL_00001485"; /** * Builds an encoded HTTP POST content string from a string map */ public static String buildPostString(Map data) { StringBuilder var1 = new StringBuilder(); Iterator var2 = data.entrySet().iterator(); while (var2.hasNext()) { Entry var3 = (Entry)var2.next(); if (var1.length() > 0) { var1.append('&'); } try { var1.append(URLEncoder.encode((String)var3.getKey(), "UTF-8")); } catch (UnsupportedEncodingException var6) { var6.printStackTrace(); } if (var3.getValue() != null) { var1.append('='); try { var1.append(URLEncoder.encode(var3.getValue().toString(), "UTF-8")); } catch (UnsupportedEncodingException var5) { var5.printStackTrace(); } } } return var1.toString(); } /** * Sends a POST to the given URL using the map as the POST args */ public static String postMap(URL url, Map data, boolean skipLoggingErrors) { return post(url, buildPostString(data), skipLoggingErrors); } /** * Sends a POST to the given URL */ private static String post(URL url, String content, boolean skipLoggingErrors) { try { Proxy var3 = MinecraftServer.getServer() == null ? null : MinecraftServer.getServer().getServerProxy(); if (var3 == null) { var3 = Proxy.NO_PROXY; } HttpURLConnection var4 = (HttpURLConnection)url.openConnection(var3); var4.setRequestMethod("POST"); var4.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); var4.setRequestProperty("Content-Length", "" + content.getBytes().length); var4.setRequestProperty("Content-Language", "en-US"); var4.setUseCaches(false); var4.setDoInput(true); var4.setDoOutput(true); DataOutputStream var5 = new DataOutputStream(var4.getOutputStream()); var5.writeBytes(content); var5.flush(); var5.close(); BufferedReader var6 = new BufferedReader(new InputStreamReader(var4.getInputStream())); StringBuffer var8 = new StringBuffer(); String var7; while ((var7 = var6.readLine()) != null) { var8.append(var7); var8.append('\r'); } var6.close(); return var8.toString(); } catch (Exception var9) { if (!skipLoggingErrors) { logger.error("Could not post to " + url, var9); } return ""; } } }