/// <summary> /// 准备 /// </summary> /// <param name="service">当前服务</param> /// <param name="message">当前消息</param> /// <param name="tag">扩展信息</param> /// <param name="next">下一个处理方法</param> /// <returns></returns> async Task IMessageMiddleware.Handle(IService service, IInlineMessage message, object tag, Func <Task> next) { var serviceName = message.Service; if (ToolsOption.Instance.ReverseProxyMap == null || !ToolsOption.Instance.ReverseProxyMap.TryGetValue(message.Service, out serviceName)) { if (string.Equals(service.ServiceName, message.Service, StringComparison.OrdinalIgnoreCase)) { message.State = MessageState.Unhandled; message.ResultCreater = ApiResultHelper.State; await next(); return; } } FlowTracer.BeginStepMonitor($"[反向代理] {serviceName}/{message.Method}"); message.Service = serviceName; try { message.ResultCreater ??= ApiResultHelper.State; await MessagePoster.Post(message, true); } finally { FlowTracer.EndStepMonitor(); } }
public async Task Context() { var traceInfo = new TraceInfo { Start = new DateTime(2020, 3, 12), CallApp = "UnitTest" }; var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/context", TraceInfo = traceInfo, Context = new System.Collections.Generic.Dictionary <string, string> { { "User", new UserInfo { UserId = "20200312", NickName = "agebull", OrganizationId = "20200312" }.ToJson() } } }); msg.OfflineResult(); Console.WriteLine(msg.Result); var ctx = msg.ResultData; Assert.IsTrue(ctx != null, msg.Result); Assert.IsTrue(msg.TraceInfo.CallApp == traceInfo.CallApp, msg.TraceInfo.CallApp); Assert.IsTrue(msg.TraceInfo.Start == traceInfo.Start, msg.TraceInfo.Start?.ToString()); //Assert.IsTrue(ctx.User.OrganizationId == ZeroTeamJwtClaim.UnknownOrganizationId, ctx.User.OrganizationId.ToString()); }
/// <summary> /// 准备 /// </summary> /// <param name="message">当前消息</param> /// <returns></returns> async Task IMessageMiddleware.OnEnd(IInlineMessage message) { if (!GlobalContext.IsOptionTrue("Receipt")) { return; } var receipt = MessageHelper.Simple(message.ID, ToolsOption.Instance.ReceiptService, ToolsOption.Instance.ReceiptApi, message.ToJson()); await MessagePoster.Post(receipt); }
public async Task NonSupport() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "abcccceerw" }); Assert.IsTrue(msg.State == MessageState.Unhandled, msg.Result); }
public async Task Test() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "_health_" }); Assert.IsTrue(msg.State == MessageState.Success, msg.Result); }
public async Task <string> ParallelCall() { var res = await MessagePoster.Post(new InlineMessage { Topic = "ParallelTest", Title = "hello" }); return(JsonConvert.SerializeObject(res.ResultData, Formatting.Indented)); }
public async Task Exception() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/exception" }); msg.OfflineResult(); Assert.IsTrue(msg.State == MessageState.FrameworkError, msg.Result); }
public async Task VoidCall() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/void", Argument = @"{""argument"": ""value""}" }); Assert.IsTrue(msg.Result == null, msg.Result); }
public async Task XmlString() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/xml", Argument = @"{""Value"": ""value""}" }); Assert.IsTrue(msg.Result[0] == '<', msg.Result); }
public async Task FromServices() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/FromServices", Argument = "{}" }); Assert.IsTrue(msg.State == MessageState.Success, msg.Result); }
public async Task FromServices() { var(msg, ser) = await MessagePoster.Post(new InlineMessage { ServiceName = "UnitService", ApiName = "v1/FromServices", Content = @"{ }" }); Assert.True(msg.State == MessageState.Success, msg.Result); }
public async Task CustomSerialize() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/customSerialize", Argument = "<xml><Value>val</Value></xml>" }); msg.OfflineResult(); Console.WriteLine(msg.Result); Assert.IsTrue(msg.State == MessageState.Success, msg.Result); }
public async Task Error() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/err" }); msg.OfflineResult(); var res = msg.ResultData as IApiResult; Assert.IsFalse(res.Success, msg.Result); }
public async Task FailedMessage() { try { var msg = await MessagePoster.Post(null); Assert.Fail("不应执行"); } catch (Exception ex) { Assert.IsTrue(ex is NotSupportedException, ex.Message); } try { var msg = await MessagePoster.Post(new InlineMessage()); Assert.Fail("不应执行"); } catch (Exception ex) { Assert.IsTrue(ex is NotSupportedException, ex.Message); } try { var msg = await MessagePoster.Post(new InlineMessage { Service = "abbc" }); Assert.Fail("不应执行"); } catch (Exception ex) { Assert.IsTrue(ex is NotSupportedException, ex.Message); } try { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService" }); Assert.Fail("不应执行"); } catch (Exception ex) { Assert.IsTrue(ex is NotSupportedException, ex.Message); } }
public async Task Argument() { var(msg, ser) = await MessagePoster.Post(new InlineMessage { ServiceName = "UnitService", ApiName = "v1/argument", Content = @"{ ""Value"" : ""string"" }" }); Assert.True(msg.State == MessageState.Success, msg.Result); }
public async Task Argument() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/argument", Argument = @"{ ""Value"" : ""string"" }" }); Assert.IsTrue(msg.State == MessageState.Success, msg.Result); }
public async Task Validate2() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/validate", Argument = @"{""Value"": ""value""}" }); msg.OfflineResult(); Console.WriteLine(msg.Result); var res = msg.ResultData as IApiResult; Assert.IsTrue(res != null && res.Success, msg.Result); }
public async Task MulitArg() { var(msg, ser) = await MessagePoster.Post(new InlineMessage { ServiceName = "UnitService", ApiName = "v1/mulitArg", Content = @"{ ""a"" : ""string"", ""b"" : 0, ""c"" : 0, ""d"" : 0 }" }); Assert.True(msg.State == MessageState.Success, msg.Result); }
public async Task Validate() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/validate", Argument = @"{ }" }); msg.OfflineResult(); Console.WriteLine(msg.Result); Assert.IsTrue(msg.State == MessageState.FormalError, msg.Result); }
public async Task MulitArg() { var msg = await MessagePoster.Post(new InlineMessage { Service = "UnitService", Method = "v1/mulitArg", Argument = @"{ ""a"" : ""string"", ""b"" : 0, ""c"" : 0, ""d"" : 0 }" }); Assert.IsTrue(msg.State == MessageState.Success, msg.Result); }
public async Task FromConfig() { var(msg, ser) = await MessagePoster.Post(new InlineMessage { ServiceName = "UnitService", ApiName = "v1/FromConfig", Content = @"{ ""AppName"" : ""string"", ""MaxWorkThreads"" : 0, ""MaxIOThreads"" : 0, ""IsolateFolder"" : true, ""DataFolder"" : ""string"", ""ConfigFolder"" : ""string"", ""AddInPath"" : ""string"", ""EnableAddIn"" : true }" }); Assert.True(msg.State == MessageState.Success, msg.Result); }