protected override void HandleRequest()
{
string result = "";
using (Database dbx = new Database())
{
Account acc = dbx.Verify(Query["guid"], Query["password"], Program.GameData);
if (String.IsNullOrEmpty(Query["guid"]) ||
String.IsNullOrEmpty(Query["password"]) ||
String.IsNullOrEmpty(Query["type"]) ||
acc == null)
{
Context.Response.StatusCode = 400;
result = "<Error>Invalid GUID/password combination</Error>";
}
else
{
string[][] ranks = dbx.GetArenaLeaderboards(Query["type"], acc);
result += "<ArenaRecords>";
foreach (string[] i in ranks)
{
MySqlCommand cmd = dbx.CreateQuery();
cmd.CommandText = "select skin, tex1, tex2, items, charType, petId from characters where charid = @charid";
cmd.Parameters.AddWithValue("@charid", i[2]);
string skin, tex1, tex2, inventory, cclass, petid;
skin = tex1 = tex2 = inventory = cclass = petid = null;
using (MySqlDataReader drdr = cmd.ExecuteReader())
{
while (drdr.Read())
{
skin = drdr.GetString("skin");
tex1 = drdr.GetString("tex1");
tex2 = drdr.GetString("tex2");
inventory = drdr.GetString("items");
cclass = drdr.GetString("charType");
petid = drdr.GetString("petId");
}
}
var _pet = dbx.GetPet(int.Parse(petid), acc);
result += $"<Record><WaveNumber>{i[0]}</WaveNumber><Time>{i[4]}</Time><PlayData><CharacterData>";
if (acc.Guild.Name != null) result += $@"<GuildName>{acc.Guild.Name}</GuildName><GuildRank>{acc.Guild.Rank}</GuildRank>";
result += $"<Id>{i[2]}</Id><Texture>{skin}</Texture><Tex1>{tex1}</Tex1><Tex2>{tex2}</Tex2><Inventory>{inventory}</Inventory><Name>{acc.Name}</Name><Class>{cclass}</Class></CharacterData>";
result += "<Pet name=\"" + _pet.SkinName + "\" type=\"" + _pet.Type + "\" instanceId=\"" + _pet.InstanceId + "\" rarity=\"" + _pet.Rarity + "\" maxAbilityPower=\"" + _pet.MaxAbilityPower + "\" skin=\"" + _pet.Skin + "\" family=\"" + "Farm" + "\"><Abilities>";
for (int e = 0; e < 3; e++)
result += "<Ability type=\"" + _pet.Abilities[e].Type + "\" power=\"" + _pet.Abilities[e].Power + "\" points=\"" + _pet.Abilities[e].Points + "\"/>";
result += "</Abilities></Pet></PlayData></Record>";
}
result += "</ArenaRecords>";
}
}
byte[] buf = Encoding.UTF8.GetBytes(result);
Context.Response.ContentType = "text/*";
Context.Response.OutputStream.Write(buf, 0, buf.Length);
}