diff --git a/MTSC.UnitTests/EchoModule.cs b/MTSC.UnitTests/EchoModule.cs index c321674..2a6285f 100644 --- a/MTSC.UnitTests/EchoModule.cs +++ b/MTSC.UnitTests/EchoModule.cs @@ -7,9 +7,9 @@ namespace MTSC.UnitTests { public class EchoModule : HttpRouteBase { - public override Task HandleRequest(HttpRequest request) + public override Task HandleRequest(HttpRequestContext request) { - return Task.FromResult(new HttpResponse { BodyString = request.BodyString, StatusCode = HttpMessage.StatusCodes.OK }); + return Task.FromResult(new HttpResponse { BodyString = request.Request.BodyString, StatusCode = HttpMessage.StatusCodes.OK }); } } } diff --git a/MTSC.UnitTests/LongRunningModule.cs b/MTSC.UnitTests/LongRunningModule.cs index 1825b8b..68aa995 100644 --- a/MTSC.UnitTests/LongRunningModule.cs +++ b/MTSC.UnitTests/LongRunningModule.cs @@ -7,7 +7,7 @@ namespace MTSC.UnitTests { public class LongRunningModule : HttpRouteBase { - public async override Task HandleRequest(HttpRequest request) + public async override Task HandleRequest(HttpRequestContext request) { await Task.Delay(5000); return new HttpResponse { StatusCode = HttpMessage.StatusCodes.OK }; diff --git a/MTSC.UnitTests/MultipartModule.cs b/MTSC.UnitTests/MultipartModule.cs index b0833c6..46acd76 100644 --- a/MTSC.UnitTests/MultipartModule.cs +++ b/MTSC.UnitTests/MultipartModule.cs @@ -8,9 +8,9 @@ namespace MTSC.UnitTests { public class MultipartModule : HttpRouteBase { - public override Task HandleRequest(HttpRequest request) + public override Task HandleRequest(HttpRequestContext request) { - if (request.Form.Count > 0) + if (request.Request.Form.Count > 0) { return Task.FromResult(new HttpResponse { StatusCode = HttpMessage.StatusCodes.OK }); } diff --git a/MTSC.UnitTests/RoutingModules/ExceptionThrowingModule.cs b/MTSC.UnitTests/RoutingModules/ExceptionThrowingModule.cs index ac5ed25..05dfe36 100644 --- a/MTSC.UnitTests/RoutingModules/ExceptionThrowingModule.cs +++ b/MTSC.UnitTests/RoutingModules/ExceptionThrowingModule.cs @@ -6,7 +6,7 @@ namespace MTSC.UnitTests.RoutingModules { public class ExceptionThrowingModule : HttpRouteBase { - public override Task HandleRequest(HttpRequest request) + public override Task HandleRequest(HttpRequestContext request) { throw new System.NotImplementedException(); } diff --git a/MTSC.UnitTests/RoutingModules/SomeRequestConverter.cs b/MTSC.UnitTests/RoutingModules/SomeRequestConverter.cs index c86d94d..9b06f87 100644 --- a/MTSC.UnitTests/RoutingModules/SomeRequestConverter.cs +++ b/MTSC.UnitTests/RoutingModules/SomeRequestConverter.cs @@ -9,7 +9,7 @@ namespace MTSC.UnitTests.RoutingModules { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { - if (sourceType == typeof(HttpRequest)) + if (sourceType == typeof(HttpRequestContext)) { return true; } @@ -19,7 +19,7 @@ namespace MTSC.UnitTests.RoutingModules public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - if (value is HttpRequest) + if (value is HttpRequestContext) { return new SomeRoutingRequest(); } diff --git a/MTSC.UnitTests/RoutingModules/SomeResponseConverter.cs b/MTSC.UnitTests/RoutingModules/SomeResponseConverter.cs index 868b816..6e58c7b 100644 --- a/MTSC.UnitTests/RoutingModules/SomeResponseConverter.cs +++ b/MTSC.UnitTests/RoutingModules/SomeResponseConverter.cs @@ -2,7 +2,6 @@ using System.ComponentModel; using System.Globalization; using MTSC.Common.Http; -using MTSC.Common.Http.RoutingModules; namespace MTSC.UnitTests.RoutingModules { diff --git a/MTSC.UnitTests/TestQueryModule.cs b/MTSC.UnitTests/TestQueryModule.cs index 08931ac..7e2afa1 100644 --- a/MTSC.UnitTests/TestQueryModule.cs +++ b/MTSC.UnitTests/TestQueryModule.cs @@ -8,9 +8,9 @@ namespace MTSC.UnitTests { class TestQueryModule : HttpRouteBase { - public override Task HandleRequest(HttpRequest request) + public override Task HandleRequest(HttpRequestContext request) { - var query = HttpUtility.ParseQueryString(request.RequestQuery); + var query = HttpUtility.ParseQueryString(request.Request.RequestQuery); if(query.Count == 2 && query.Keys[0] == "key1" && query.Keys[1] == "key2") diff --git a/MTSC/Common/Http/HttpRequestContext.cs b/MTSC/Common/Http/HttpRequestContext.cs new file mode 100644 index 0000000..c9ddc12 --- /dev/null +++ b/MTSC/Common/Http/HttpRequestContext.cs @@ -0,0 +1,27 @@ +using MTSC.Common.Http.RoutingModules; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; +using System; + +namespace MTSC.Common.Http +{ + public sealed class HttpRequestContext + { + public ClientData ClientData { get; } + public HttpRequest Request { get; } + public HttpRouteBase Route { get; } + public HttpRoutingHandler RoutingHandler { get; } + + internal HttpRequestContext( + ClientData clientData, + HttpRequest httpRequest, + HttpRouteBase httpRouteBase, + HttpRoutingHandler httpRoutingHandler) + { + this.ClientData = clientData ?? throw new ArgumentNullException(nameof(clientData)); + this.Request = httpRequest ?? throw new ArgumentNullException(nameof(httpRequest)); + this.Route = httpRouteBase ?? throw new ArgumentNullException(nameof(httpRouteBase)); + this.RoutingHandler = httpRoutingHandler ?? throw new ArgumentNullException(nameof(httpRoutingHandler)); + } + } +} diff --git a/MTSC/Common/Http/RoutingModules/Http200Module.cs b/MTSC/Common/Http/RoutingModules/Http200Module.cs index 1654659..e5a5bd7 100644 --- a/MTSC/Common/Http/RoutingModules/Http200Module.cs +++ b/MTSC/Common/Http/RoutingModules/Http200Module.cs @@ -12,7 +12,7 @@ namespace MTSC.Common.Http.RoutingModules this.server = server; } - public override Task HandleRequest(HttpRequest request) + public override Task HandleRequest(HttpRequestContext request) { return Task.FromResult(this.OK); } diff --git a/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs b/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs index 13daeb5..e9630f3 100644 --- a/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs +++ b/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs @@ -27,7 +27,12 @@ namespace MTSC.Common.Http.RoutingModules { try { - return await this.HandleRequest(request); + var context = new HttpRequestContext( + clientData: this.ClientData, + httpRequest: request, + httpRouteBase: this, + httpRoutingHandler: this.HttpRoutingHandler); + return await this.HandleRequest(context); } catch { @@ -39,7 +44,7 @@ namespace MTSC.Common.Http.RoutingModules throw; } } - public abstract Task HandleRequest(HttpRequest request); + public abstract Task HandleRequest(HttpRequestContext request); void ISetHttpContext.SetScopedServiceProvider(Slim.IServiceProvider serviceProvider) { @@ -79,7 +84,7 @@ namespace MTSC.Common.Http.RoutingModules } public abstract class HttpRouteBase : HttpRouteBase { - public sealed override Task HandleRequest(HttpRequest request) + public sealed override Task HandleRequest(HttpRequestContext request) { var typeConverter = TypeDescriptor.GetConverter(typeof(T)); return this.HandleRequest((T)typeConverter.ConvertFrom(request)); @@ -89,7 +94,7 @@ namespace MTSC.Common.Http.RoutingModules } public abstract class HttpRouteBase : HttpRouteBase { - public sealed async override Task HandleRequest(HttpRequest request) + public sealed async override Task HandleRequest(HttpRequestContext request) { var requestTypeConverter = TypeDescriptor.GetConverter(typeof(TReceive)); var responseTypeConverter = TypeDescriptor.GetConverter(typeof(TSend)); diff --git a/MTSC/MTSC.csproj b/MTSC/MTSC.csproj index e8ec1bb..704c7f3 100644 --- a/MTSC/MTSC.csproj +++ b/MTSC/MTSC.csproj @@ -5,13 +5,13 @@ net48;netstandard2.0;netcoreapp3.1;net5.0;net6.0 - 4.7.0 + 4.8.0 latest Alexandru-Victor Macocian MTSC Modular TCP Server and Client - 4.6.0.0 - 4.6.0.0 + 4.8.0.0 + 4.8.0.0 true AnyCPU;x64 https://github.com/AlexMacocian/MTSC