Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
  • 10 commits
  • 16 files changed
  • 0 commit comments
  • 1 contributor
3  RestBucks.Tests/DataInitializer.cs
View
@@ -2,8 +2,6 @@ namespace RestBucks.Tests
{
using System.Linq;
- using log4net.Config;
-
using NHibernate;
using NHibernate.Tool.hbm2ddl;
@@ -22,7 +20,6 @@ public class DataInitializer
[TestFixtureSetUp]
public void SetUp()
{
- XmlConfigurator.Configure();
var configuration = NHibernateInstaller.CreateConfiguration();
new SchemaExport(configuration).Execute(true, true, false);
sessionFactory = configuration.BuildSessionFactory();
3  RestBucks.Tests/DataTests/Base/DataTestsBase.cs
View
@@ -1,7 +1,5 @@
namespace RestBucks.Tests.DataTests.Base
{
- using log4net.Config;
-
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
@@ -18,7 +16,6 @@ public class DataTestsBase
[TestFixtureSetUp]
public void FixtureSetUp()
{
- XmlConfigurator.Configure();
configuration = NHibernateInstaller.CreateConfiguration("Restbucks_Tests");
new SchemaExport(configuration).Execute(true, true, false);
sessionFactory = configuration.BuildSessionFactory();
74 RestBucks.Tests/IntegrationSmokeTests.cs
View
@@ -2,9 +2,13 @@
{
using NUnit.Framework;
+ using Nancy;
using Nancy.Testing;
using RestBucks;
+ using RestBucks.Resources.Orders.Representations;
+
+ using Util;
[TestFixture]
public class IntegrationSmokeTests
@@ -16,5 +20,75 @@ public void AppCanInitializeWithRealDependencies()
() => new Browser(new Bootstrapper())
);
}
+
+ [Test]
+ public void AppCanCreateAndDeleteOrder()
+ {
+ var app = new Browser(new Bootstrapper());
+
+ var createdResponse = CreatedOrder(app);
+
+ Assert.That(createdResponse.StatusCode, Is.EqualTo(HttpStatusCode.Created));
+ Assert.That(createdResponse.Headers.Keys, Contains.Item("Location"));
+
+ var orderPath = GetOrderPath(createdResponse);
+
+ var getOrderResponse = app.Get(orderPath);
+ Assert.That(getOrderResponse.StatusCode, Is.EqualTo(HttpStatusCode.OK), string.Format("order at {0} not found", orderPath));
+
+ var deletedResponse = app.Delete(orderPath);
+ Assert.That(deletedResponse.StatusCode, Is.EqualTo(HttpStatusCode.NoContent));
+
+ var getDeletedOrderResponse = app.Get(orderPath);
+ Assert.That(getDeletedOrderResponse.StatusCode, Is.EqualTo(HttpStatusCode.MovedPermanently));
+ }
+
+ private static string GetOrderPath(BrowserResponse createdResponse)
+ {
+ var orderPath = createdResponse.Headers["Location"].Remove(0, 12);
+ return orderPath;
+ }
+
+ private static BrowserResponse CreatedOrder(Browser app)
+ {
+ var createdResponse = app.Post("/orders/",
+ with =>
+ {
+ with.HttpRequest();
+ with.Header("Content-Type", "application/vnd.restbucks+xml");
+ with.Body("<order xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://restbuckson.net\">"
+ + " <location>inShop</location>"
+ + " <items>"
+ + " <item>"
+ + " <name>espresso</name>"
+ + " <quantity>3</quantity>"
+ + " <size>medium</size>"
+ + " </item>"
+ + " </items>"
+ + "</order>");
+ });
+ return createdResponse;
+ }
+
+ [Test]
+ public void AppReturnsBadRequestWhenCancelingPaidOrder()
+ {
+ var app = new Browser(new Bootstrapper());
+
+ var createdResponse = CreatedOrder(app);
+ var orderPath = GetOrderPath(createdResponse);
+
+ var paymnetResponse = app.Post(orderPath + "/payment/",
+ with =>
+ {
+ with.HttpRequest();
+ var xmlString = new PaymentRepresentation {CardNumber = "321", CardOwner = "Jose"}.ToXmlString();
+ with.Body(xmlString);
+ });
+ Assert.That(paymnetResponse.StatusCode, Is.EqualTo(HttpStatusCode.OK));
+
+ var cancelResponse = app.Delete(orderPath);
+ Assert.That(cancelResponse.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
+ }
}
}
42 RestBucks.Tests/Representations/OrderRepresentationJsonTests.cs
View
@@ -1,42 +0,0 @@
-namespace RestBucks.Tests.Representations
-{
- using NUnit.Framework;
-
- using RestBucks.Domain;
- using RestBucks.Resources.Orders.Representations;
-
- using Util;
-
- [TestFixture]
- public class OrderRepresentationJsonTests
- {
- [Test]
- public void SerializeOrder()
- {
- var orderRepresentation = new OrderRepresentation
- {
- Cost = 100.4m,
- Location = Location.InShop,
- Items =
- {
- new OrderItemRepresentation
- {
- Name = "latte",
- Preferences =
- {
- {"size", "large"},
- {"milk", "skim"}
- }
- }
- }
- };
-
- var json = orderRepresentation.ToJsonString();
-
- var expected =
- "{\"Location\":\"InShop\",\"Cost\":100.4,\"Items\":[{\"Name\":\"latte\",\"Quantity\":0,\"Preferences\":{\"size\":\"large\",\"milk\":\"skim\"}}],\"Status\":\"OrderCreated\",\"Links\":[]}";
-
- Assert.AreEqual(expected, json);
- }
- }
-}
91 RestBucks.Tests/Representations/OrderRepresentationTests.cs
View
@@ -1,45 +1,48 @@
-using System;
-using System.Linq;
-using NUnit.Framework;
-using RestBucks.Domain;
-using RestBucks.Resources.Orders.Representations;
-using RestBucks.Tests.Util;
-using SharpTestsEx;
-
-namespace RestBucks.Tests.Representations
+namespace RestBucks.Tests.Representations
{
- [TestFixture]
- public class OrderRepresentationTests
+ using System;
+ using System.Linq;
+
+ using NUnit.Framework;
+
+ using RestBucks.Domain;
+ using RestBucks.Resources.Orders.Representations;
+ using RestBucks.Tests.Util;
+
+ using SharpTestsEx;
+
+ [TestFixture]
+ public class OrderRepresentationTests
+ {
+ [Test]
+ public void SerializeOrder()
{
- [Test]
- public void SerializeOrder()
- {
- var orderRepresentation = new OrderRepresentation
- {
- Cost = 100.4m,
- Location = Location.InShop,
- Items =
- {
- new OrderItemRepresentation
- {
- Name = "latte",
- Preferences =
- {
- { "size", "large"} ,
- { "milk", "skim" }
- }
- }
- }
- };
+ var orderRepresentation = new OrderRepresentation
+ {
+ Cost = 100.4m,
+ Location = Location.InShop,
+ Items =
+ {
+ new OrderItemRepresentation
+ {
+ Name = "latte",
+ Preferences =
+ {
+ {"size", "large"},
+ {"milk", "skim"}
+ }
+ }
+ }
+ };
- Console.WriteLine(orderRepresentation.ToXmlString());
- }
+ Assert.DoesNotThrow((() => orderRepresentation.ToXmlString()));
+ }
- [Test]
- public void CanDeserialize()
- {
- var xml =
- @"<?xml version=""1.0""?>
+ [Test]
+ public void CanDeserialize()
+ {
+ var xml =
+ @"<?xml version=""1.0""?>
<order xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://restbuckson.net"">
<location>inShop</location>
<cost>100.4</cost>
@@ -52,11 +55,11 @@ public void CanDeserialize()
</item>
</items>
</order>";
- var representation = XmlUtil.FromXmlString<OrderRepresentation>(xml);
- representation.Satisfy(r =>
- r.Items.Any(i => i.Name == "latte"
- && i.Preferences.Any(p => p.Key == "size")
- && i.Preferences.Any(p => p.Key == "milk")));
- }
+ var representation = XmlUtil.FromXmlString<OrderRepresentation>(xml);
+ representation.Satisfy(r =>
+ r.Items.Any(i => i.Name == "latte"
+ && i.Preferences.Any(p => p.Key == "size")
+ && i.Preferences.Any(p => p.Key == "milk")));
}
+ }
}
11 RestBucks.Tests/Resources/WhenUserCancelAnOrder.cs
View
@@ -3,6 +3,7 @@ namespace RestBucks.Tests.Resources
using NUnit.Framework;
using Nancy;
+ using Nancy.Testing;
using RestBucks.Domain;
using RestBucks.Resources.Orders.Representations;
@@ -72,21 +73,21 @@ public void ACallToGet_ShouldReturnMovedPermanentlyAndNewLocation()
responseToGet.Headers["Location"].Should().Be.EqualTo(expected);
}
- [Test, Ignore]
+ [Test]
public void ACallToGetCanceled_ShouldReturnTheOrder()
{
// Arrange
- var order = new Order { Id = 123 };
- var expectedBody = OrderRepresentationMapper.Map(order, "").ToXmlString();
+ var order = new Order { Id = 123, Status = OrderStatus.Canceled };
+ var expectedBody = OrderRepresentationMapper.Map(order, "http://bogus/").ToXmlString();
+ order.Status = OrderStatus.Unpaid;
var app = CreateAppProxy(new RepositoryStub<Order>(order));
// Act
var response = app.Delete("/order/123/");
var responseToGet = app.Get("/trash/order/123/");
-
responseToGet.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK);
- responseToGet.Body.ToXmlString().Should().Be.EqualTo(expectedBody);
+ responseToGet.Body.AsString().Should().Be.EqualTo(expectedBody);
}
}
}
17 RestBucks.Tests/RestBucks.Tests.csproj
View
@@ -48,9 +48,6 @@
<Reference Include="Iesi.Collections">
<HintPath>..\packages\Iesi.Collections.3.2.0.1002\lib\Net35\Iesi.Collections.dll</HintPath>
</Reference>
- <Reference Include="log4net">
- <HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath>
- </Reference>
<Reference Include="Moq">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
</Reference>
@@ -63,27 +60,15 @@
<Reference Include="Nancy.Testing">
<HintPath>..\packages\Nancy.Testing.0.10.0\lib\net40\Nancy.Testing.dll</HintPath>
</Reference>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json.4.0.2\lib\net40\Newtonsoft.Json.dll</HintPath>
- </Reference>
<Reference Include="NHibernate, Version=3.2.0.1002, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<HintPath>..\packages\NHibernate.3.2.0.1002\lib\Net35\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.2.5.9.10348\lib\nunit.framework.dll</HintPath>
</Reference>
- <Reference Include="nunit.mocks">
- <HintPath>..\packages\NUnit.2.5.9.10348\lib\nunit.mocks.dll</HintPath>
- </Reference>
- <Reference Include="pnunit.framework">
- <HintPath>..\packages\NUnit.2.5.9.10348\lib\pnunit.framework.dll</HintPath>
- </Reference>
<Reference Include="SharpTestsEx">
<HintPath>..\packages\SharpTestsEx.1.1.1\lib\SharpTestsEx.dll</HintPath>
</Reference>
- <Reference Include="SharpTestsEx.Mvc">
- <HintPath>..\packages\SharpTestsEx.1.1.1\lib\SharpTestsEx.Mvc.dll</HintPath>
- </Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
@@ -106,7 +91,6 @@
<Compile Include="Domain\EqualityMemberTests.cs" />
<Compile Include="IntegrationSmokeTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Representations\OrderRepresentationJsonTests.cs" />
<Compile Include="Representations\OrderRepresentationTests.cs" />
<Compile Include="Resources\ResourceHandlerTestBase.cs" />
<Compile Include="Resources\WhenUserGETsMenu.cs" />
@@ -115,7 +99,6 @@
<Compile Include="Resources\WhenUserUpdateAnOrder.cs" />
<Compile Include="Resources\WhenUserCancelAnOrder.cs" />
<Compile Include="Resources\WhenUserCreatesAnOrder.cs" />
- <Compile Include="Util\JsonUtil.cs" />
<Compile Include="Util\RepositoryStub.cs" />
<Compile Include="Util\XmlUtil.cs" />
</ItemGroup>
26 RestBucks.Tests/Util/JsonUtil.cs
View
@@ -1,26 +0,0 @@
-namespace RestBucks.Tests.Util
-{
- using System.IO;
- using System.Text;
-
- using Newtonsoft.Json;
-
- public static class JsonUtil
- {
- public static string ToJsonString<T>(this T input)
- {
- string xml;
- var serializer = new JsonSerializer();
- using (var ms = new MemoryStream())
- using (var tw = new StreamWriter(ms))
- using (var jswriter = new JsonTextWriter(tw))
- {
- serializer.Serialize(jswriter, input);
- jswriter.Flush();
- ms.Position = 0;
- xml = Encoding.Default.GetString(ms.ToArray());
- }
- return xml;
- }
- }
-}
3  RestBucks.Tests/packages.config
View
@@ -2,13 +2,10 @@
<packages>
<package id="Castle.Core" version="3.0.0.4001" />
<package id="Castle.Windsor" version="3.0.0.4001" />
- <package id="HttpClient" version="0.3.0" />
<package id="Iesi.Collections" version="3.2.0.1002" />
- <package id="JsonValue" version="0.3.0" />
<package id="Moq" version="4.0.10827" />
<package id="Nancy" version="0.10.0" />
<package id="Nancy.Testing" version="0.10.0" />
- <package id="Newtonsoft.Json" version="4.0.2" />
<package id="NHibernate" version="3.2.0.1002" />
<package id="NUnit" version="2.5.9.10348" />
<package id="SharpTestsEx" version="1.1.1" />
17 RestBucks/Bootstrapper.cs
View
@@ -10,6 +10,8 @@
using Castle.Windsor;
using Castle.Windsor.Installer;
+ using Infrastructure;
+
using NHibernate;
using NHibernate.Context;
@@ -33,9 +35,18 @@ protected override void ApplicationStartup(Castle.Windsor.IWindsorContainer cont
container.Resolve<Barista>();
- pipelines.BeforeRequest += c => CreateSession(container);
- pipelines.AfterRequest += c => CommitSession(container);
- pipelines.OnError += (c, e) => RollbackSession(container);
+ pipelines.BeforeRequest += ctx => CreateSession(container);
+ pipelines.AfterRequest += ctx => CommitSession(container);
+ pipelines.OnError += (ctx, ex) => RollbackSession(container);
+ pipelines.OnError += InvalidOrderOperationHandler;
+ }
+
+ private Response InvalidOrderOperationHandler(NancyContext ctx, Exception ex)
+ {
+ if (ex is InvalidOrderOperationException)
+ return ResponseHelpers.BadRequest(null, content: ex.Message);
+ else
+ return null;
}
private Response RollbackSession(IWindsorContainer container)
4 RestBucks/Infrastructure/InvalidOrderOperationException.cs
View
@@ -4,6 +4,10 @@
public class InvalidOrderOperationException : Exception
{
+ public InvalidOrderOperationException() : this("no message provided")
+ {
+ }
+
public InvalidOrderOperationException(string message)
: base(message)
{
20 RestBucks/Infrastructure/WebApi/RestBucksHttpErrorHandler.cs
View
@@ -1,20 +0,0 @@
-namespace RestBucks.Infrastructure.WebApi
-{
- using Castle.DynamicProxy;
-
- // TODO Move to Nancy error handling pipeline
- public class RestBucksHttpErrorHandler : IInterceptor
- {
- public void Intercept(IInvocation invocation)
- {
- try
- {
- invocation.Proceed();
- }
- catch (InvalidOrderOperationException ex)
- {
- invocation.ReturnValue = ResponseHelpers.BadRequest(null, content: ex.Message);
- }
- }
- }
-}
7 RestBucks/Resources/Orders/Representations/OrderRepresentation.cs
View
@@ -3,10 +3,7 @@
using System.Collections.Generic;
using System.Xml.Serialization;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Converters;
-
- using RestBucks.Domain;
+ using Domain;
[XmlRoot(ElementName = "order", Namespace = "http://restbuckson.net")]
public class OrderRepresentation : RepresentationBase
@@ -17,7 +14,6 @@ public OrderRepresentation()
}
[XmlElement(ElementName = "location")]
- [JsonConverter(typeof (StringEnumConverter))]
public Location Location { get; set; }
[XmlElement(ElementName = "cost")]
@@ -27,7 +23,6 @@ public OrderRepresentation()
public List<OrderItemRepresentation> Items { get; set; }
[XmlElement(ElementName = "status")]
- [JsonConverter(typeof (StringEnumConverter))]
public OrderStatus Status { get; set; }
}
}
46 RestBucks/RestBucks.csproj
View
@@ -38,9 +38,6 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Castle.Core.3.0.0.4001\lib\net40-client\Castle.Core.dll</HintPath>
</Reference>
- <Reference Include="Castle.Facilities.Logging">
- <HintPath>..\packages\Castle.Windsor-log4net.2.5.2\lib\NET40\Castle.Facilities.Logging.dll</HintPath>
- </Reference>
<Reference Include="Castle.Windsor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Castle.Windsor.3.0.0.4001\lib\net40\Castle.Windsor.dll</HintPath>
@@ -48,37 +45,7 @@
<Reference Include="Iesi.Collections">
<HintPath>..\packages\Iesi.Collections.3.2.0.1002\lib\Net35\Iesi.Collections.dll</HintPath>
</Reference>
- <Reference Include="log4net">
- <HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ApplicationServer.Common">
- <HintPath>..\packages\WebApi.Core.0.3.0\lib\40\Microsoft.ApplicationServer.Common.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ApplicationServer.Http">
- <HintPath>..\packages\WebApi.Core.0.3.0\lib\40\Microsoft.ApplicationServer.Http.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ApplicationServer.HttpEnhancements">
- <HintPath>..\packages\WebApi.Enhancements.0.3.0\lib\40\Microsoft.ApplicationServer.HttpEnhancements.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ApplicationServer.Serialization">
- <HintPath>..\packages\WebApi.Core.0.3.0\lib\40\Microsoft.ApplicationServer.Serialization.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ApplicationServer.ServiceModel">
- <HintPath>..\packages\WebApi.Core.0.3.0\lib\40\Microsoft.ApplicationServer.ServiceModel.dll</HintPath>
- </Reference>
<Reference Include="Microsoft.CSharp" />
- <Reference Include="Microsoft.Net.Http">
- <HintPath>..\packages\HttpClient.0.3.0\lib\40\Microsoft.Net.Http.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.QueryComposition">
- <HintPath>..\packages\WebApi.Core.0.3.0\lib\40\Microsoft.QueryComposition.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.Runtime.Serialization.Json">
- <HintPath>..\packages\JsonValue.0.3.0\lib\40\Microsoft.Runtime.Serialization.Json.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.ServiceModel.Web.jQuery">
- <HintPath>..\packages\JsonValue.0.3.0\lib\40\Microsoft.ServiceModel.Web.jQuery.dll</HintPath>
- </Reference>
<Reference Include="Nancy">
<HintPath>..\packages\Nancy.0.10.0\lib\net40\Nancy.dll</HintPath>
</Reference>
@@ -88,9 +55,6 @@
<Reference Include="Nancy.Hosting.Aspnet">
<HintPath>..\packages\Nancy.Hosting.Aspnet.0.10.0\lib\net40\Nancy.Hosting.Aspnet.dll</HintPath>
</Reference>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json.4.0.2\lib\net40\Newtonsoft.Json.dll</HintPath>
- </Reference>
<Reference Include="NHibernate">
<HintPath>..\packages\NHibernate.3.2.0.1002\lib\Net35\NHibernate.dll</HintPath>
</Reference>
@@ -103,19 +67,10 @@
<HintPath>..\packages\Rx-Main.1.0.10605\lib\Net4\System.Reactive.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel" />
- <Reference Include="System.ServiceModel.Activation" />
- <Reference Include="System.ServiceModel.Web" />
- <Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
- <Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
- <Reference Include="System.Web.Services" />
- <Reference Include="System.EnterpriseServices" />
- <Reference Include="System.Web.DynamicData" />
- <Reference Include="System.Web.Entity" />
- <Reference Include="System.Web.ApplicationServices" />
</ItemGroup>
<ItemGroup>
<Content Include="index.htm" />
@@ -154,7 +109,6 @@
<Compile Include="Infrastructure\InvalidOrderOperationException.cs" />
<Compile Include="Infrastructure\RequestExtensions.cs" />
<Compile Include="Infrastructure\UriSegment.cs" />
- <Compile Include="Infrastructure\WebApi\RestBucksHttpErrorHandler.cs" />
<Compile Include="Resources\Orders\TrashHandler.cs" />
<Compile Include="Resources\Orders\Representations\OrderRepresentationMapper.cs" />
<Compile Include="Resources\Orders\Representations\PaymentRepresentation.cs" />
3  RestBucks/Web.config
View
@@ -15,9 +15,6 @@
<add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
</handlers>
</system.webServer>
- <system.serviceModel>
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
- </system.serviceModel>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
9 RestBucks/packages.config
View
@@ -1,21 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Castle.Core" version="3.0.0.4001" />
- <package id="Castle.Core-log4net" version="2.5.2" />
<package id="Castle.Windsor" version="3.0.0.4001" />
- <package id="Castle.Windsor-log4net" version="2.5.2" />
- <package id="HttpClient" version="0.3.0" />
<package id="Iesi.Collections" version="3.2.0.1002" />
- <package id="JsonValue" version="0.3.0" />
- <package id="log4net" version="1.2.10" />
<package id="Nancy" version="0.10.0" />
<package id="Nancy.Bootstrappers.Windsor" version="0.10.0" />
<package id="Nancy.Hosting.Aspnet" version="0.10.0" />
- <package id="Newtonsoft.Json" version="4.0.2" />
<package id="NHibernate" version="3.2.0.1002" />
<package id="NHibernate.SetForNet4" version="1.0.1" />
<package id="Rx-Main" version="1.0.10605" />
- <package id="WebApi.All" version="0.3.0" />
- <package id="WebApi.Core" version="0.3.0" />
- <package id="WebApi.Enhancements" version="0.3.0" />
</packages>

No commit comments for this range

Something went wrong with that request. Please try again.