package net.minecraft.client.mco; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import net.minecraft.util.Session; @SideOnly(Side.CLIENT) public class McoClient { private static McoOption field_98178_a = McoOption.func_98154_b(); private final String field_96390_a; private final String field_100007_c; private static String field_96388_b = "https://mcoapi.minecraft.net/"; public McoClient(Session par1Session) { this.field_96390_a = par1Session.sessionId; this.field_100007_c = par1Session.username; } public ValueObjectList func_96382_a() throws ExceptionMcoService { String s = this.func_96377_a(Request.func_96358_a(field_96388_b + "worlds")); return ValueObjectList.func_98161_a(s); } public McoServer func_98176_a(long par1) throws ExceptionMcoService, IOException { String s = this.func_96377_a(Request.func_96358_a(field_96388_b + "worlds" + "/$ID".replace("$ID", String.valueOf(par1)))); return McoServer.func_98165_c(s); } public McoServerAddress func_96374_a(long par1) throws ExceptionMcoService, IOException { String s = field_96388_b + "worlds" + "/$ID/join".replace("$ID", "" + par1); String s1 = this.func_96377_a(Request.func_96358_a(s)); return McoServerAddress.func_98162_a(s1); } public void func_96386_a(String par1Str, String par2Str, String par3Str, String par4Str) throws ExceptionMcoService, UnsupportedEncodingException { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append(field_96388_b).append("worlds").append("/$NAME/$LOCATION_ID".replace("$NAME", this.func_96380_a(par1Str)).replace("$LOCATION_ID", par3Str)); HashMap hashmap = new HashMap(); if (par2Str != null && !par2Str.trim().equals("")) { hashmap.put("motd", par2Str); } if (par4Str != null && !par4Str.equals("")) { hashmap.put("seed", par4Str); } if (!hashmap.isEmpty()) { boolean flag = true; Entry entry; for (Iterator iterator = hashmap.entrySet().iterator(); iterator.hasNext(); stringbuilder.append((String)entry.getKey()).append("=").append(this.func_96380_a((String)entry.getValue()))) { entry = (Entry)iterator.next(); if (flag) { stringbuilder.append("?"); flag = false; } else { stringbuilder.append("&"); } } } this.func_96377_a(Request.func_104064_a(stringbuilder.toString(), "", 5000, 30000)); } public Boolean func_96375_b() throws ExceptionMcoService, IOException { String s = field_96388_b + "mco" + "/available"; String s1 = this.func_96377_a(Request.func_96358_a(s)); return Boolean.valueOf(s1); } public int func_96379_c() throws ExceptionMcoService { String s = field_96388_b + "payments" + "/unused"; String s1 = this.func_96377_a(Request.func_96358_a(s)); return Integer.valueOf(s1).intValue(); } public void func_96381_a(long par1, String par3Str) throws ExceptionMcoService { String s1 = field_96388_b + "worlds" + "/$WORLD_ID/invites/$USER_NAME".replace("$WORLD_ID", String.valueOf(par1)).replace("$USER_NAME", par3Str); this.func_96377_a(Request.func_96355_b(s1)); } public McoServer func_96387_b(long par1, String par3Str) throws ExceptionMcoService, IOException { String s1 = field_96388_b + "worlds" + "/$WORLD_ID/invites/$USER_NAME".replace("$WORLD_ID", String.valueOf(par1)).replace("$USER_NAME", par3Str); String s2 = this.func_96377_a(Request.func_96361_b(s1, "")); return McoServer.func_98165_c(s2); } public void func_96384_a(long par1, String par3Str, String par4Str, int par5, int par6) throws ExceptionMcoService, UnsupportedEncodingException { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append(field_96388_b).append("worlds").append("/$WORLD_ID/$NAME".replace("$WORLD_ID", String.valueOf(par1)).replace("$NAME", this.func_96380_a(par3Str))); if (par4Str != null && !par4Str.trim().equals("")) { stringbuilder.append("?motd=").append(this.func_96380_a(par4Str)); } stringbuilder.append("&difficulty=").append(par5).append("&gameMode=").append(par6); this.func_96377_a(Request.func_96363_c(stringbuilder.toString(), "")); } public Boolean func_96383_b(long par1) throws ExceptionMcoService, IOException { String s = field_96388_b + "worlds" + "/$WORLD_ID/open".replace("$WORLD_ID", String.valueOf(par1)); String s1 = this.func_96377_a(Request.func_96363_c(s, "")); return Boolean.valueOf(s1); } public Boolean func_96378_c(long par1) throws ExceptionMcoService, IOException { String s = field_96388_b + "worlds" + "/$WORLD_ID/close".replace("$WORLD_ID", String.valueOf(par1)); String s1 = this.func_96377_a(Request.func_96363_c(s, "")); return Boolean.valueOf(s1); } public Boolean func_96376_d(long par1, String par3Str) throws ExceptionMcoService, UnsupportedEncodingException { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append(field_96388_b).append("worlds").append("/$WORLD_ID/reset".replace("$WORLD_ID", String.valueOf(par1))); if (par3Str != null && par3Str.length() > 0) { stringbuilder.append("?seed=").append(this.func_96380_a(par3Str)); } String s1 = this.func_96377_a(Request.func_96353_a(stringbuilder.toString(), "", 30000, 80000)); return Boolean.valueOf(s1); } public ValueObjectSubscription func_98177_f(long par1) throws ExceptionMcoService, IOException { String s = this.func_96377_a(Request.func_96358_a(field_96388_b + "subscriptions" + "/$WORLD_ID".replace("$WORLD_ID", String.valueOf(par1)))); return ValueObjectSubscription.func_98169_a(s); } private String func_96380_a(String par1Str) throws UnsupportedEncodingException { return URLEncoder.encode(par1Str, "UTF-8"); } private String func_96377_a(Request par1Request) throws ExceptionMcoService { par1Request.func_100006_a("sid", this.field_96390_a); par1Request.func_100006_a("user", this.field_100007_c); if (field_98178_a instanceof McoOptionSome) { McoPair mcopair = (McoPair)field_98178_a.func_98155_a(); par1Request.func_100006_a((String)mcopair.func_100005_a(), (String)mcopair.func_100004_b()); } try { int i = par1Request.func_96362_a(); if (i == 503) { throw new ExceptionRetryCall(10); } else if (i >= 200 && i < 300) { McoOption mcooption = par1Request.func_98175_b(); if (mcooption instanceof McoOptionSome) { field_98178_a = mcooption; } return par1Request.func_96364_c(); } else { throw new ExceptionMcoService(par1Request.func_96362_a(), par1Request.func_96364_c()); } } catch (ExceptionMcoHttp exceptionmcohttp) { throw new ExceptionMcoService(500, "Server not available!"); } } }