Added temporary owin glue for HttpAbstractions based on Microsoft.Owin.

This commit is contained in:
David Fowler 2014-01-25 16:29:15 -08:00
parent 7637ca17dc
commit a8b4c71284
10 changed files with 286 additions and 5 deletions

View File

@ -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

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"/>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3D838D54-3F3B-4E5C-81DF-68875FDD2B7A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.AspNet.Abstractions.Owin</RootNamespace>
<AssemblyName>Microsoft.AspNet.Abstractions.Owin</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<BaseIntermediateOutputPath>obj/net45</BaseIntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\net45</OutputPath>
<DefineConstants>DEBUG;TRACE;NET45</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\net45</OutputPath>
<DefineConstants>TRACE;NET45</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="mscorlib"/>
<Reference Include="System"/>
<Reference Include="System.Core"/>
<Reference Include="Microsoft.CSharp"/>
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="OwinExtensions.cs" />
<Compile Include="OwinHttpContext.cs" />
<Content Include="project.json"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.AspNet.Abstractions\Microsoft.AspNet.Abstractions.net45.csproj">
<Project>{D36288AF-8A0E-48DD-8AF8-15B72F91C70A}</Project>
<Name>Microsoft.AspNet.Abstractions</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -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<OwinHttpContext, Task> handler)
{
app.Run(context =>
{
var httpContext = new OwinHttpContext(context);
return handler(httpContext);
});
}
}
}

View File

@ -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);
}
}
}
}

View File

@ -0,0 +1,11 @@
{
"version": "0.1-alpha-*",
"dependencies": {
"Owin": "1.0",
"Microsoft.Owin": "2.1.0",
"Microsoft.AspNet.Abstractions": ""
},
"configurations": {
"net45": { }
}
}

View File

@ -49,7 +49,7 @@
<ItemGroup>
</ItemGroup>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30124-097\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30125-098\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -46,7 +46,7 @@
<ItemGroup>
</ItemGroup>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30124-097\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30125-098\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -47,7 +47,7 @@
<Name>Microsoft.AspNet.FeatureModel</Name>
</ProjectReference>
</ItemGroup>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30124-097\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30125-098\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -56,7 +56,7 @@
<ItemGroup>
</ItemGroup>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30124-097\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30125-098\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -57,7 +57,7 @@
<Name>Microsoft.AspNet.HttpFeature</Name>
</ProjectReference>
</ItemGroup>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30124-097\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<Import Project="..\..\packages\ProjectK.0.0.1-pre-30125-098\Framework\K\v1.0\ProjectK.CSharp.targets"/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">