protected override void HandleRequest() { string response = SerializePackageResponse.Serialize(); using (StreamWriter wtr = new StreamWriter(Context.Response.OutputStream)) wtr.Write(response); }
protected override void HandleRequest() { DbAccount acc; if (Query["guid"] == null || Query["password"] == null) { WriteErrorLine("Error.incorrectEmailOrPassword"); } else { LoginStatus status = Database.Verify(Query["guid"], Query["password"], out acc); if (status == LoginStatus.OK) { if (Query["packageId"] == null) { WriteLine("<Error>Package ID not declared.</Error>"); return; } SerializePackageResponse package = SerializePackageResponse.GetPackage(int.Parse(Query["packageId"])); if (package == null) { WriteLine($"<Error>Package ID {Query["packageId"]} not found.</Error>"); return; } if (acc.Credits < package.Price) { WriteLine("<Error>Not enough gold.</Error>"); return; } if (Database.CheckPackage(acc, package.PackageId, package.MaxPurchase)) { WriteLine($"<Error>You can only purchase {package.Name} {package.MaxPurchase} time{((package.MaxPurchase <= 1) ? "" : "s")}.</Error>"); return; } if (package.MaxPurchase != -1) { Database.AddPackage(acc, package.PackageId); } Database.UpdateCredit(acc, -package.Price); int[] gifts = Utils.FromCommaSepString32(package.Contents); List <int> giftsList = acc.Gifts.ToList(); foreach (int item in gifts) { giftsList.Add(item); } acc.Gifts = giftsList.ToArray(); acc.Flush(); acc.Reload(); WriteLine("<Success/>"); } else { WriteErrorLine(status.GetInfo()); } } }