Example #1
0
        /// <summary>
        /// Обработчик асинхронных действий пользователя с помощью объекта XMLHttpRequest и ответа клиенту в виде простого текста
        /// </summary>
        /// <returns>Выполнено ли какое либо асинхронное действие</returns>
        private static bool AccountAjaxAction(HttpListenerContext context)
        {
            switch (context.Request.QueryString["actionAccount"])
            {
            case "check":
                try
                {
                    var message = FarmAccount.CheckCredentials(new FarmAccountArg
                    {
                        AccountId = context.Request.QueryString["col0"].ToIntSafe() ?? -1,
                        // ReSharper disable AssignNullToNotNullAttribute
                        Login    = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col1"], Encoding.Default)),
                        Password = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col2"], Encoding.Default)),
                        // ReSharper restore AssignNullToNotNullAttribute
                        TradeEnabled = context.Request.QueryString.AllKeys.Contains("col3") && context.Request.QueryString["col3"] == "true"
                    });
                    WriteTextResponse(context, string.Format("Результат : \"{0}\"", message));
                    return(true);
                }
                catch (ArgumentException ex)
                {
                    Logger.Error("Ошибка проверки счёта", ex);
                    WriteTextResponse(context, ex.Message);
                    return(true);
                }
                catch (Exception ex)
                {
                    Logger.Error("Ошибка проверки счёта", ex);
                    WriteTextResponse(context, ex.Message);
                    return(true);
                }

            case "edit":
                try
                {
                    var currentAccountId = context.Request.QueryString["currentAccountId"].ToIntSafe() ?? -1;

                    EditAccount(new FarmAccountArg
                    {
                        CurrentAccountId = currentAccountId,
                        AccountId        = context.Request.QueryString["col0"].ToIntSafe() ?? -1,
                        // ReSharper disable AssignNullToNotNullAttribute
                        Login    = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col1"], Encoding.Default)),
                        Password = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col2"], Encoding.Default)),
                        // ReSharper restore AssignNullToNotNullAttribute
                        TradeEnabled = context.Request.QueryString.AllKeys.Contains("col3") && context.Request.QueryString["col3"] == "true"
                    });

                    WriteTextResponse(context, string.Format("Результат : аккаунт \"{0}\" изменён", currentAccountId));
                    return(true);
                }
                catch (ArgumentException ex)
                {
                    Logger.Error("Ошибка обновления счёта", ex);
                    WriteTextResponse(context, ex.Message);
                    return(true);
                }
                catch (Exception ex)
                {
                    Logger.Error("Ошибка обновления счёта", ex);
                    WriteTextResponse(context, ex.Message);
                    return(true);
                }
            }
            return(false);
        }