using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Chop { public class Request { private int mHeaderID; private string mContent; private int reader; public int HeaderID { get { return mHeaderID; } } public string Content { get { return mContent; } set { mContent = value; } } public string GetRestContent { get { return mContent.Substring(reader); } } public static Request Parse(string Data) { Request request = new Request(); request.reader = 0; request.mHeaderID = HabboEncoding.decodeB64(Data.Substring(0, 2)); request.mContent = Data.Substring(2); return request; } internal int PopBase64Int() { int i = HabboEncoding.decodeB64(mContent.Substring(reader, 2)); reader += 2; return i; } internal uint PopBase64UInt() { return (uint)PopBase64Int(); } internal int PopWiredInt() { int i = HabboEncoding.decodeWired(mContent.Substring(reader)); reader += HabboEncoding.encodeWired(i).Length; return i; } internal uint PopWiredUInt() { return (uint)PopWiredInt(); } internal string PopString() { int length = HabboEncoding.decodeB64(mContent.Substring(reader, 2)); string s = mContent.Substring(2 + reader, length); reader += 2 + length; return s; } internal bool PopWiredBoolean() { int i = HabboEncoding.decodeWired(mContent.Substring(reader)); reader += HabboEncoding.encodeWired(i).Length; if (i == 1) return true; else return false; } internal bool PopBase64Boolean() { int i = HabboEncoding.decodeB64(mContent.Substring(reader, 1)); reader++; if (i == 1) return true; else return false; } public string GetStructured(int num) { try { int tempReader = reader; int itCount = 0; double maxIt = mContent.Substring(tempReader).Length / 4; while (itCount <= maxIt) { itCount++; string tmpStr = mContent.Substring(tempReader, 2); int id = HabboEncoding.decodeB64(tmpStr); tempReader += 2; tmpStr = mContent.Substring(tempReader, 2); int len = HabboEncoding.decodeB64(tmpStr); tempReader += 2; string output = mContent.Substring(tempReader, len); tempReader += len; if (num == id) { return output; } } } catch { return ""; } return ""; } } }