private static string UrlDecodeStringFromStringInternal(string s, Encoding e) { int length = s.Length; HttpUtil.UrlDecoder urlDecoder = new HttpUtil.UrlDecoder(length, e); int i = 0; while (i < length) { char c = s[i]; if (c == '+') { c = ' '; goto IL_106; } if (c != '%' || i >= length - 2) { goto IL_106; } if (s[i + 1] == 'u' && i < length - 5) { int num = HttpUtil.HexToInt(s[i + 2]); int num2 = HttpUtil.HexToInt(s[i + 3]); int num3 = HttpUtil.HexToInt(s[i + 4]); int num4 = HttpUtil.HexToInt(s[i + 5]); if (num < 0 || num2 < 0 || num3 < 0 || num4 < 0) { goto IL_106; } c = (char)(num << 12 | num2 << 8 | num3 << 4 | num4); i += 5; urlDecoder.AddChar(c); } else { int num5 = HttpUtil.HexToInt(s[i + 1]); int num6 = HttpUtil.HexToInt(s[i + 2]); if (num5 < 0 || num6 < 0) { goto IL_106; } byte b = (byte)(num5 << 4 | num6); i += 2; urlDecoder.AddByte(b); } IL_120: i++; continue; IL_106: if ((c & 'タ') == '\0') { urlDecoder.AddByte((byte)c); goto IL_120; } urlDecoder.AddChar(c); goto IL_120; } return urlDecoder.GetString(); }
private static string UrlDecodeStringFromBytesInternal(byte[] buf, int offset, int count, Encoding e) { HttpUtil.UrlDecoder urlDecoder = new HttpUtil.UrlDecoder(count, e); int i = 0; while (i < count) { int num = offset + i; byte b = buf[num]; if (b == 43) { b = 32; goto IL_DA; } if (b != 37 || i >= count - 2) { goto IL_DA; } if (buf[num + 1] == 117 && i < count - 5) { int num2 = HttpUtil.HexToInt((char)buf[num + 2]); int num3 = HttpUtil.HexToInt((char)buf[num + 3]); int num4 = HttpUtil.HexToInt((char)buf[num + 4]); int num5 = HttpUtil.HexToInt((char)buf[num + 5]); if (num2 < 0 || num3 < 0 || num4 < 0 || num5 < 0) { goto IL_DA; } char ch = (char)(num2 << 12 | num3 << 8 | num4 << 4 | num5); i += 5; urlDecoder.AddChar(ch); } else { int num6 = HttpUtil.HexToInt((char)buf[num + 1]); int num7 = HttpUtil.HexToInt((char)buf[num + 2]); if (num6 >= 0 && num7 >= 0) { b = (byte)(num6 << 4 | num7); i += 2; goto IL_DA; } goto IL_DA; } IL_E1: i++; continue; IL_DA: urlDecoder.AddByte(b); goto IL_E1; } return urlDecoder.GetString(); }
internal static string CollapsePercentUFromStringInternal(string s, Encoding e) { int length = s.Length; HttpUtil.UrlDecoder urlDecoder = new HttpUtil.UrlDecoder(length, e); int num = s.IndexOf("%u", StringComparison.Ordinal); if (num == -1) { return s; } int i = 0; while (i < length) { char c = s[i]; if (c != '%' || i >= length - 5 || s[i + 1] != 'u') { goto IL_C8; } int num2 = HttpUtil.HexToInt(s[i + 2]); int num3 = HttpUtil.HexToInt(s[i + 3]); int num4 = HttpUtil.HexToInt(s[i + 4]); int num5 = HttpUtil.HexToInt(s[i + 5]); if (num2 < 0 || num3 < 0 || num4 < 0 || num5 < 0) { goto IL_C8; } c = (char)(num2 << 12 | num3 << 8 | num4 << 4 | num5); i += 5; urlDecoder.AddChar(c); IL_E5: i++; continue; IL_C8: if ((c & 'タ') == '\0') { urlDecoder.AddByte((byte)c); goto IL_E5; } urlDecoder.AddChar(c); goto IL_E5; } return urlDecoder.GetString(); }