From a8b4c71284f3ad4f22a7cd9ae95c479a8ba5cc69 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Sat, 25 Jan 2014 16:29:15 -0800 Subject: [PATCH] Added temporary owin glue for HttpAbstractions based on Microsoft.Owin. --- HttpAbstractions.sln | 7 + ...soft.AspNet.Abstractions.Owin.net45.csproj | 69 +++++++ .../OwinExtensions.cs | 19 ++ .../OwinHttpContext.cs | 175 ++++++++++++++++++ .../project.json | 11 ++ .../Microsoft.AspNet.Abstractions.k10.csproj | 2 +- .../Microsoft.AspNet.FeatureModel.k10.csproj | 2 +- ...icrosoft.AspNet.HttpEnvironment.k10.csproj | 2 +- .../Microsoft.AspNet.HttpFeature.k10.csproj | 2 +- .../Microsoft.AspNet.PipelineCore.k10.csproj | 2 +- 10 files changed, 286 insertions(+), 5 deletions(-) create mode 100644 src/Microsoft.AspNet.Abstractions.Owin/Microsoft.AspNet.Abstractions.Owin.net45.csproj create mode 100644 src/Microsoft.AspNet.Abstractions.Owin/OwinExtensions.cs create mode 100644 src/Microsoft.AspNet.Abstractions.Owin/OwinHttpContext.cs create mode 100644 src/Microsoft.AspNet.Abstractions.Owin/project.json diff --git a/HttpAbstractions.sln b/HttpAbstractions.sln index 2761a830fa..9db8314362 100644 --- a/HttpAbstractions.sln +++ b/HttpAbstractions.sln @@ -27,6 +27,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{1D737C82-F EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.PipelineCore.Tests", "test\Microsoft.AspNet.PipelineCore.Tests\Microsoft.AspNet.PipelineCore.Tests.csproj", "{86942914-0334-4352-87ED-B971281C74E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Abstractions.Owin.net45", "src\Microsoft.AspNet.Abstractions.Owin\Microsoft.AspNet.Abstractions.Owin.net45.csproj", "{3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -73,6 +75,10 @@ Global {86942914-0334-4352-87ED-B971281C74E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {86942914-0334-4352-87ED-B971281C74E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {86942914-0334-4352-87ED-B971281C74E2}.Release|Any CPU.Build.0 = Release|Any CPU + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -88,5 +94,6 @@ Global {68A538BA-D542-49CB-9615-B4F5A4E78C87} = {D38DDB2B-1138-4F45-8A6A-9499E880F620} {E31D45AC-70F3-47D4-9625-A4D8C6AA1B6B} = {D38DDB2B-1138-4F45-8A6A-9499E880F620} {D36288AF-8A0E-48DD-8AF8-15B72F91C70A} = {D38DDB2B-1138-4F45-8A6A-9499E880F620} + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A} = {D38DDB2B-1138-4F45-8A6A-9499E880F620} EndGlobalSection EndGlobal diff --git a/src/Microsoft.AspNet.Abstractions.Owin/Microsoft.AspNet.Abstractions.Owin.net45.csproj b/src/Microsoft.AspNet.Abstractions.Owin/Microsoft.AspNet.Abstractions.Owin.net45.csproj new file mode 100644 index 0000000000..4f425dd45f --- /dev/null +++ b/src/Microsoft.AspNet.Abstractions.Owin/Microsoft.AspNet.Abstractions.Owin.net45.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {3D838D54-3F3B-4E5C-81DF-68875FDD2B7A} + Library + Properties + Microsoft.AspNet.Abstractions.Owin + Microsoft.AspNet.Abstractions.Owin + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + + + False + ..\..\packages\Owin.1.0\lib\net40\Owin.dll + + + False + ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll + + + + + + + + + + {D36288AF-8A0E-48DD-8AF8-15B72F91C70A} + Microsoft.AspNet.Abstractions + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Abstractions.Owin/OwinExtensions.cs b/src/Microsoft.AspNet.Abstractions.Owin/OwinExtensions.cs new file mode 100644 index 0000000000..885b7952d1 --- /dev/null +++ b/src/Microsoft.AspNet.Abstractions.Owin/OwinExtensions.cs @@ -0,0 +1,19 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNet.Abstractions.Owin; + +namespace Owin +{ + public static class OwinExtensions + { + public static void RunHttpContext(this IAppBuilder app, Func handler) + { + app.Run(context => + { + var httpContext = new OwinHttpContext(context); + + return handler(httpContext); + }); + } + } +} diff --git a/src/Microsoft.AspNet.Abstractions.Owin/OwinHttpContext.cs b/src/Microsoft.AspNet.Abstractions.Owin/OwinHttpContext.cs new file mode 100644 index 0000000000..2762319fcd --- /dev/null +++ b/src/Microsoft.AspNet.Abstractions.Owin/OwinHttpContext.cs @@ -0,0 +1,175 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using Microsoft.AspNet.Abstractions; +using Microsoft.Owin; + +namespace Microsoft.AspNet.Abstractions.Owin +{ + public class OwinHttpContext : HttpContext + { + private readonly IOwinContext _context; + private readonly HttpRequest _request; + private readonly HttpResponse _response; + + public OwinHttpContext(IOwinContext context) + { + _context = context; + _request = new OwinHttpRequest(this, context.Request); + _response = new OwinHttpResponse(this, context.Response); + } + + public override void Dispose() + { + + } + + public override object GetInterface(Type type) + { + return null; + } + + public override HttpRequest Request + { + get { return _request; } + } + + public override HttpResponse Response + { + get { return _response; } + } + + public override void SetInterface(Type type, object instance) + { + + } + + private class OwinHttpRequest : HttpRequest + { + private HttpContext _context; + private IOwinRequest _request; + + public OwinHttpRequest(HttpContext context, IOwinRequest request) + { + _context = context; + _request = request; + } + + public override Stream Body + { + get + { + return _request.Body; + } + set + { + _request.Body = value; + } + } + + public override HttpContext HttpContext + { + get { return _context; } + } + + public override Microsoft.AspNet.Abstractions.PathString Path + { + get + { + return new Microsoft.AspNet.Abstractions.PathString(_request.Path.Value); + } + set + { + _request.Path = new Microsoft.Owin.PathString(value.Value); + } + } + + public override Microsoft.AspNet.Abstractions.PathString PathBase + { + get + { + return new Microsoft.AspNet.Abstractions.PathString(_request.PathBase.Value); + } + set + { + _request.PathBase = new Microsoft.Owin.PathString(value.Value); + } + } + + public override Microsoft.AspNet.Abstractions.QueryString QueryString + { + get + { + return new Microsoft.AspNet.Abstractions.QueryString(_request.QueryString.Value); + } + set + { + _request.QueryString = new Microsoft.Owin.QueryString(value.Value); + } + } + + public override Uri Uri + { + get { return _request.Uri; } + } + } + + private class OwinHttpResponse : HttpResponse + { + private readonly HttpContext _context; + private readonly IOwinResponse _response; + + public OwinHttpResponse(HttpContext context, IOwinResponse response) + { + _context = context; + _response = response; + } + + public override Stream Body + { + get + { + return _response.Body; + } + set + { + _response.Body = value; + } + } + + public override string ContentType + { + get + { + return _response.ContentType; + } + set + { + _response.ContentType = value; + } + } + + public override HttpContext HttpContext + { + get { return _context; } + } + + public override int StatusCode + { + get + { + return _response.StatusCode; + } + set + { + _response.StatusCode = value; + } + } + + public override Task WriteAsync(string data) + { + return _response.WriteAsync(data); + } + } + } +} diff --git a/src/Microsoft.AspNet.Abstractions.Owin/project.json b/src/Microsoft.AspNet.Abstractions.Owin/project.json new file mode 100644 index 0000000000..b2b9a4babd --- /dev/null +++ b/src/Microsoft.AspNet.Abstractions.Owin/project.json @@ -0,0 +1,11 @@ +{ + "version": "0.1-alpha-*", + "dependencies": { + "Owin": "1.0", + "Microsoft.Owin": "2.1.0", + "Microsoft.AspNet.Abstractions": "" + }, + "configurations": { + "net45": { } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.Abstractions/Microsoft.AspNet.Abstractions.k10.csproj b/src/Microsoft.AspNet.Abstractions/Microsoft.AspNet.Abstractions.k10.csproj index 3c2308ba77..1b1196a9e7 100644 --- a/src/Microsoft.AspNet.Abstractions/Microsoft.AspNet.Abstractions.k10.csproj +++ b/src/Microsoft.AspNet.Abstractions/Microsoft.AspNet.Abstractions.k10.csproj @@ -49,7 +49,7 @@ - +