package net.minecraft.util;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
public class HttpUtil
{
/**
* Builds an encoded HTTP POST content string from a string map
*/
public static String buildPostString(Map par0Map)
{
StringBuilder var1 = new StringBuilder();
Iterator var2 = par0Map.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 HTTP POST request to the given URL with data from a map
*/
public static String sendPost(URL par0URL, Map par1Map, boolean par2)
{
return sendPost(par0URL, buildPostString(par1Map), par2);
}
/**
* Sends a HTTP POST request to the given URL with data from a string
*/
public static String sendPost(URL par0URL, String par1Str, boolean par2)
{
try
{
HttpURLConnection var3 = (HttpURLConnection)par0URL.openConnection();
var3.setRequestMethod("POST");
var3.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
var3.setRequestProperty("Content-Length", "" + par1Str.getBytes().length);
var3.setRequestProperty("Content-Language", "en-US");
var3.setUseCaches(false);
var3.setDoInput(true);
var3.setDoOutput(true);
DataOutputStream var4 = new DataOutputStream(var3.getOutputStream());
var4.writeBytes(par1Str);
var4.flush();
var4.close();
BufferedReader var5 = new BufferedReader(new InputStreamReader(var3.getInputStream()));
StringBuffer var7 = new StringBuffer();
String var6;
while ((var6 = var5.readLine()) != null)
{
var7.append(var6);
var7.append('\r');
}
var5.close();
return var7.toString();
}
catch (Exception var8)
{
if (!par2)
{
Logger.getLogger("Minecraft").log(Level.SEVERE, "Could not post to " + par0URL, var8);
}
return "";
}
}
@SideOnly(Side.CLIENT)
/**
* The downloader for texturepacks stored in the server.
*/
public static void downloadTexturePack(File par0File, String par1Str, IDownloadSuccess par2IDownloadSuccess, Map par3Map, int par4, IProgressUpdate par5IProgressUpdate)
{
Thread var6 = new Thread(new HttpUtilRunnable(par5IProgressUpdate, par1Str, par3Map, par0File, par2IDownloadSuccess, par4));
var6.setDaemon(true);
var6.start();
}
@SideOnly(Side.CLIENT)
public static int func_76181_a() throws IOException
{
ServerSocket var0 = null;
boolean var1 = true;
int var10;
try
{
var0 = new ServerSocket(0);
var10 = var0.getLocalPort();
}
finally
{
try
{
if (var0 != null)
{
var0.close();
}
}
catch (IOException var8)
{
;
}
}
return var10;
}
@SideOnly(Side.CLIENT)
public static String[] func_82718_a(String par0Str, String par1Str)
{
HashMap var2 = new HashMap();
var2.put("user", par0Str);
var2.put("password", par1Str);
var2.put("version", Integer.valueOf(13));
String var3;
try
{
var3 = sendPost(new URL("http://login.minecraft.net/"), var2, false);
}
catch (MalformedURLException var5)
{
var5.printStackTrace();
return null;
}
if (var3 != null && var3.length() != 0)
{
if (!var3.contains(":"))
{
if (var3.trim().equals("Bad login"))
{
System.out.println("Login failed");
}
else if (var3.trim().equals("Old version"))
{
System.out.println("Outdated launcher");
}
else if (var3.trim().equals("User not premium"))
{
System.out.println(var3);
}
else
{
System.out.println(var3);
}
return null;
}
else
{
String[] var4 = var3.split(":");
return new String[] {var4[2], var4[3]};
}
}
else
{
System.out.println("Can\'t connect to minecraft.net");
return null;
}
}
}