001package net.minecraft.client.mco;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.io.IOException;
006import java.io.InputStream;
007import java.net.HttpURLConnection;
008import java.net.URL;
009
010@SideOnly(Side.CLIENT)
011public abstract class Request
012{
013    protected HttpURLConnection field_96367_a;
014    private boolean field_96366_c;
015    protected String field_96365_b;
016
017    public Request(String par1Str, int par2, int par3)
018    {
019        try
020        {
021            this.field_96365_b = par1Str;
022            this.field_96367_a = (HttpURLConnection)(new URL(par1Str)).openConnection();
023            this.field_96367_a.setConnectTimeout(par2);
024            this.field_96367_a.setReadTimeout(par3);
025        }
026        catch (Exception exception)
027        {
028            throw new ExceptionMcoHttp("Failed URL: " + par1Str, exception);
029        }
030    }
031
032    public void func_100006_a(String par1Str, String par2Str)
033    {
034        String s2 = this.field_96367_a.getRequestProperty("Cookie");
035
036        if (s2 == null)
037        {
038            this.field_96367_a.setRequestProperty("Cookie", par1Str + "=" + par2Str);
039        }
040        else
041        {
042            this.field_96367_a.setRequestProperty("Cookie", s2 + ";" + par1Str + "=" + par2Str);
043        }
044    }
045
046    public int func_96362_a()
047    {
048        try
049        {
050            this.func_96354_d();
051            return this.field_96367_a.getResponseCode();
052        }
053        catch (Exception exception)
054        {
055            throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, exception);
056        }
057    }
058
059    public McoOption func_98175_b()
060    {
061        String s = this.field_96367_a.getHeaderField("Set-Cookie");
062
063        if (s != null)
064        {
065            String s1 = s.substring(0, s.indexOf("="));
066            String s2 = s.substring(s.indexOf("=") + 1, s.indexOf(";"));
067            return McoOption.func_98153_a(McoPair.func_98157_a(s1, s2));
068        }
069        else
070        {
071            return McoOption.func_98154_b();
072        }
073    }
074
075    public String func_96364_c()
076    {
077        try
078        {
079            this.func_96354_d();
080            String s = this.func_96362_a() >= 400 ? this.func_96352_a(this.field_96367_a.getErrorStream()) : this.func_96352_a(this.field_96367_a.getInputStream());
081            this.func_96360_f();
082            return s;
083        }
084        catch (IOException ioexception)
085        {
086            throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, ioexception);
087        }
088    }
089
090    private String func_96352_a(InputStream par1InputStream) throws IOException
091    {
092        if (par1InputStream == null)
093        {
094            throw new IllegalArgumentException("input stream cannot be null");
095        }
096        else
097        {
098            StringBuilder stringbuilder = new StringBuilder();
099
100            for (int i = par1InputStream.read(); i != -1; i = par1InputStream.read())
101            {
102                stringbuilder.append((char)i);
103            }
104
105            return stringbuilder.toString();
106        }
107    }
108
109    private void func_96360_f()
110    {
111        byte[] abyte = new byte[1024];
112        InputStream inputstream;
113
114        try
115        {
116            boolean flag = false;
117            inputstream = this.field_96367_a.getInputStream();
118
119            while (true)
120            {
121                if (inputstream.read(abyte) <= 0)
122                {
123                    inputstream.close();
124                    break;
125                }
126            }
127        }
128        catch (Exception exception)
129        {
130            try
131            {
132                inputstream = this.field_96367_a.getErrorStream();
133                boolean flag1 = false;
134
135                while (true)
136                {
137                    if (inputstream.read(abyte) <= 0)
138                    {
139                        inputstream.close();
140                        break;
141                    }
142                }
143            }
144            catch (IOException ioexception)
145            {
146                ;
147            }
148        }
149    }
150
151    protected Request func_96354_d()
152    {
153        if (!this.field_96366_c)
154        {
155            Request request = this.func_96359_e();
156            this.field_96366_c = true;
157            return request;
158        }
159        else
160        {
161            return this;
162        }
163    }
164
165    protected abstract Request func_96359_e();
166
167    public static Request func_96358_a(String par0Str)
168    {
169        return new RequestGet(par0Str, 5000, 5000);
170    }
171
172    public static Request func_96361_b(String par0Str, String par1Str)
173    {
174        return new RequestPost(par0Str, par1Str.getBytes(), 5000, 5000);
175    }
176
177    public static Request func_96355_b(String par0Str)
178    {
179        return new RequestDelete(par0Str, 5000, 5000);
180    }
181
182    public static Request func_96363_c(String par0Str, String par1Str)
183    {
184        return new RequestPut(par0Str, par1Str.getBytes(), 5000, 5000);
185    }
186
187    public static Request func_96353_a(String par0Str, String par1Str, int par2, int par3)
188    {
189        return new RequestPut(par0Str, par1Str.getBytes(), par2, par3);
190    }
191}