001 package net.minecraft.util; 002 003 import cpw.mods.fml.relauncher.Side; 004 import cpw.mods.fml.relauncher.SideOnly; 005 import java.io.BufferedReader; 006 import java.io.DataOutputStream; 007 import java.io.File; 008 import java.io.IOException; 009 import java.io.InputStreamReader; 010 import java.io.UnsupportedEncodingException; 011 import java.net.HttpURLConnection; 012 import java.net.MalformedURLException; 013 import java.net.ServerSocket; 014 import java.net.URL; 015 import java.net.URLEncoder; 016 import java.util.HashMap; 017 import java.util.Iterator; 018 import java.util.Map; 019 import java.util.Map.Entry; 020 import java.util.logging.Level; 021 import java.util.logging.Logger; 022 023 public class HttpUtil 024 { 025 /** 026 * Builds an encoded HTTP POST content string from a string map 027 */ 028 public static String buildPostString(Map par0Map) 029 { 030 StringBuilder var1 = new StringBuilder(); 031 Iterator var2 = par0Map.entrySet().iterator(); 032 033 while (var2.hasNext()) 034 { 035 Entry var3 = (Entry)var2.next(); 036 037 if (var1.length() > 0) 038 { 039 var1.append('&'); 040 } 041 042 try 043 { 044 var1.append(URLEncoder.encode((String)var3.getKey(), "UTF-8")); 045 } 046 catch (UnsupportedEncodingException var6) 047 { 048 var6.printStackTrace(); 049 } 050 051 if (var3.getValue() != null) 052 { 053 var1.append('='); 054 055 try 056 { 057 var1.append(URLEncoder.encode(var3.getValue().toString(), "UTF-8")); 058 } 059 catch (UnsupportedEncodingException var5) 060 { 061 var5.printStackTrace(); 062 } 063 } 064 } 065 066 return var1.toString(); 067 } 068 069 /** 070 * Sends a HTTP POST request to the given URL with data from a map 071 */ 072 public static String sendPost(URL par0URL, Map par1Map, boolean par2) 073 { 074 return sendPost(par0URL, buildPostString(par1Map), par2); 075 } 076 077 /** 078 * Sends a HTTP POST request to the given URL with data from a string 079 */ 080 public static String sendPost(URL par0URL, String par1Str, boolean par2) 081 { 082 try 083 { 084 HttpURLConnection var3 = (HttpURLConnection)par0URL.openConnection(); 085 var3.setRequestMethod("POST"); 086 var3.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 087 var3.setRequestProperty("Content-Length", "" + par1Str.getBytes().length); 088 var3.setRequestProperty("Content-Language", "en-US"); 089 var3.setUseCaches(false); 090 var3.setDoInput(true); 091 var3.setDoOutput(true); 092 DataOutputStream var4 = new DataOutputStream(var3.getOutputStream()); 093 var4.writeBytes(par1Str); 094 var4.flush(); 095 var4.close(); 096 BufferedReader var5 = new BufferedReader(new InputStreamReader(var3.getInputStream())); 097 StringBuffer var7 = new StringBuffer(); 098 String var6; 099 100 while ((var6 = var5.readLine()) != null) 101 { 102 var7.append(var6); 103 var7.append('\r'); 104 } 105 106 var5.close(); 107 return var7.toString(); 108 } 109 catch (Exception var8) 110 { 111 if (!par2) 112 { 113 Logger.getLogger("Minecraft").log(Level.SEVERE, "Could not post to " + par0URL, var8); 114 } 115 116 return ""; 117 } 118 } 119 120 @SideOnly(Side.CLIENT) 121 122 /** 123 * The downloader for texturepacks stored in the server. 124 */ 125 public static void downloadTexturePack(File par0File, String par1Str, IDownloadSuccess par2IDownloadSuccess, Map par3Map, int par4, IProgressUpdate par5IProgressUpdate) 126 { 127 Thread var6 = new Thread(new HttpUtilRunnable(par5IProgressUpdate, par1Str, par3Map, par0File, par2IDownloadSuccess, par4)); 128 var6.setDaemon(true); 129 var6.start(); 130 } 131 132 @SideOnly(Side.CLIENT) 133 public static int func_76181_a() throws IOException 134 { 135 ServerSocket var0 = null; 136 boolean var1 = true; 137 int var10; 138 139 try 140 { 141 var0 = new ServerSocket(0); 142 var10 = var0.getLocalPort(); 143 } 144 finally 145 { 146 try 147 { 148 if (var0 != null) 149 { 150 var0.close(); 151 } 152 } 153 catch (IOException var8) 154 { 155 ; 156 } 157 } 158 159 return var10; 160 } 161 162 @SideOnly(Side.CLIENT) 163 public static String[] func_82718_a(String par0Str, String par1Str) 164 { 165 HashMap var2 = new HashMap(); 166 var2.put("user", par0Str); 167 var2.put("password", par1Str); 168 var2.put("version", Integer.valueOf(13)); 169 String var3; 170 171 try 172 { 173 var3 = sendPost(new URL("http://login.minecraft.net/"), var2, false); 174 } 175 catch (MalformedURLException var5) 176 { 177 var5.printStackTrace(); 178 return null; 179 } 180 181 if (var3 != null && var3.length() != 0) 182 { 183 if (!var3.contains(":")) 184 { 185 if (var3.trim().equals("Bad login")) 186 { 187 System.out.println("Login failed"); 188 } 189 else if (var3.trim().equals("Old version")) 190 { 191 System.out.println("Outdated launcher"); 192 } 193 else if (var3.trim().equals("User not premium")) 194 { 195 System.out.println(var3); 196 } 197 else 198 { 199 System.out.println(var3); 200 } 201 202 return null; 203 } 204 else 205 { 206 String[] var4 = var3.split(":"); 207 return new String[] {var4[2], var4[3]}; 208 } 209 } 210 else 211 { 212 System.out.println("Can\'t connect to minecraft.net"); 213 return null; 214 } 215 } 216 }