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()); }
/// <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()); }
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 = "Запрос не поддерживается" } })); }