コード例 #1
0
ファイル: WebContract.cs プロジェクト: zhangjiayin/TradeSharp
        public void Serialization()
        {
            var time    = DateTime.Now;
            var objects = new List <HttpParameter>
            {
                new TradeSharpServiceProcess
                {
                    FileName = "TradeSharp.SiteBridge",
                    Name     = "SiteBridge",
                    Title    = "Мост Web-сервиса"
                },
                new TradeSharpServiceProcess
                {
                    FileName = "TradeSharp.Quote",
                    Name     = "Quote",
                    Title    = "Котировки"
                },
                new TradeSharpServiceStartStop
                {
                    ShouldStart = true,
                    SrvName     = "TradeSharp.SiteBridge"
                },
                new ExecutionReport
                {
                    Comment = "not OK",
                    IsOk    = false
                },
                new TerminalUser
                {
                    Account = 100,
                    IP      = "198.15.12.45",
                    Login   = "******"
                },
                new ChangeAccountBalanceQuery
                {
                    AccountId  = 3,
                    ChangeType = BalanceChangeType.Deposit,
                    Amount     = 0.15M,
                    ValueDate  = time
                }
            };
            var str  = HttpParameter.SerializeInJSon(objects);
            var objs = HttpParameter.DeserializeFromJSon(str);

            Assert.IsNotNull(objs);
            Assert.AreEqual(objs.Count, objects.Count);
            Assert.IsFalse(objects.Select(o => o.ToString()).Except(objs.Select(o => o.ToString())).Any());
        }
コード例 #2
0
        /// <summary>
        /// параметры запроса переданы в формате JSON
        ///
        /// возвращает ответ, сериализованный в JSON
        /// если параметры запроса не прочитаны - вернуть состояние всех сервисов
        /// иначе - выполнить действие
        /// </summary>
        private string ProcessFormattedHttpRequest(HttpListenerContext context)
        {
            using (var reader = new StreamReader(context.Request.InputStream,
                                                 context.Request.ContentEncoding))
            {
                var text = reader.ReadToEnd();
                if (string.IsNullOrEmpty(text))
                {
                    return(GetServiceStateJSon());
                }
                var ptrs = HttpParameter.DeserializeFromJSon(text);
                if (ptrs.Count == 0)
                {
                    return(GetServiceStateJSon());
                }

                // остановить / запустить сервис
                if (ptrs[0] is TradeSharpServiceStartStop)
                {
                    var cmd    = (TradeSharpServiceStartStop)ptrs[0];
                    var report = new ExecutionReport();
                    if (cmd.ShouldStart)
                    {
                        var status = ServiceProcessManager.StartProcess(cmd.SrvName);
                        report.IsOk    = status == ServiceProcessManager.StartProcessStatus.OK;
                        report.Comment = status.ToString();
                    }
                    else
                    {
                        var status = ServiceProcessManager.KillProcess(cmd.SrvName);
                        report.IsOk    = status == ServiceProcessManager.KillProcessStatus.OK;
                        report.Comment = status.ToString();
                    }
                    return(HttpParameter.SerializeInJSon(new List <HttpParameter> {
                        report
                    }));
                }
            }

            return(GetServiceStateJSon());
        }
コード例 #3
0
ファイル: WebServer.cs プロジェクト: zhangjiayin/TradeSharp
        private string ProcessFormattedHttpRequest(HttpListenerContext context)
        {
            using (var reader = new StreamReader(context.Request.InputStream, context.Request.ContentEncoding))
            {
                var text = reader.ReadToEnd();
                if (string.IsNullOrEmpty(text))
                {
                    return(HttpParameter.SerializeInJSon(new List <HttpParameter> {
                        new ExecutionReport {
                            IsOk = false, Comment = "Список параметров (JSON) пуст"
                        }
                    }));
                }
                var ptrs = HttpParameter.DeserializeFromJSon(text);
                if (ptrs.Count == 0)
                {
                    return(HttpParameter.SerializeInJSon(new List <HttpParameter> {
                        new ExecutionReport {
                            IsOk = false, Comment = "Список параметров (JSON) - ошибка десериализации"
                        }
                    }));
                }

                if (context.Request.QueryString.AllKeys.Contains("register"))
                {
                    return(ProcessFormattedRequestRegister(ptrs));
                }
                if (context.Request.QueryString.AllKeys.Contains("balance"))
                {
                    return(ProcessFormattedRequestBalance(ptrs));
                }
            }

            return(HttpParameter.SerializeInJSon(new List <HttpParameter>
            {
                new ExecutionReport {
                    IsOk = false, Comment = "Запрос не поддерживается"
                }
            }));
        }