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 "";
}
}
}