Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions Nancy.Metadata.Swagger.DemoApplication/Modules/RootModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ public class RootModule : NancyModule
{
public RootModule() : base("/api")
{
Get["SimpleRequest", "/hello"] = r => HelloWorld();
Get["SimpleRequestWithParameter", "/hello/{name}"] = r => Hello(r.name);
Get("/hello", r => HelloWorld(), name:"SimpleRequest");
Get("/hello/{name}", r => Hello(r.name), name: "SimpleRequestWithParameter");

Post["SimplePostRequst", "/hello"] = r => HelloPost();
Post["PostRequestWithModel", "/hello/model"] = r => HelloModel();
Post("/hello", r => HelloPost(), name:"SimplePostRequest");
Post("/hello/model", r => HelloModel(), name:"PostRequestWithModel");

Post["PostRequestWithNestedModel", "/hello/nestedmodel"] = r => HelloNestedModel();
Post("/hello/nestedmodel", r => HelloNestedModel(), name: "PostRequestWithNestedModel");
}

private Response HelloNestedModel()
Expand All @@ -25,7 +25,7 @@ private Response HelloNestedModel()

SimpleResponseModel response = new SimpleResponseModel
{
Hello = string.Format("Hello, {0}. We got your name from nested obejct", model.SimpleModel.Name)
Hello = string.Format("Hello, {0}. We got your name from nested object", model.SimpleModel.Name)
};

return Response.AsJson(response);
Expand Down Expand Up @@ -79,29 +79,29 @@ public class RootMetadataModule : MetadataModule<SwaggerRouteMetadata>
public RootMetadataModule()
{
Describe["SimpleRequest"] = desc => new SwaggerRouteMetadata(desc)
.With(i => i.WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.WithSummary("Simple GET example"));
.With(i => SwaggerEndpointInfoBuilder.NewEndpointInfo(i).WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.WithSummary("Simple GET example").Build());

Describe["SimpleRequestWithParameter"] = desc => new SwaggerRouteMetadata(desc)
.With(i => i.WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.With(i => SwaggerEndpointInfoBuilder.NewEndpointInfo(i).WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.WithRequestParameter("name")
.WithSummary("Simple GET with parameters"));
.WithSummary("Simple GET with parameters").Build());

Describe["SimplePostRequst"] = desc => new SwaggerRouteMetadata(desc)
.With(info => info.WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.WithSummary("Simple POST example"));
Describe["SimplePostRequest"] = desc => new SwaggerRouteMetadata(desc)
.With(info => SwaggerEndpointInfoBuilder.NewEndpointInfo(info).WithResponseModel("200", typeof(SimpleResponseModel), "Sample response")
.WithSummary("Simple POST example").Build());

Describe["PostRequestWithModel"] = desc => new SwaggerRouteMetadata(desc)
.With(info => info.WithResponseModel("200", typeof(SimpleResponseModel))
.With(info => SwaggerEndpointInfoBuilder.NewEndpointInfo(info).WithResponseModel("200", typeof(SimpleResponseModel))
.WithResponse("400", "Bad request")
.WithSummary("Simple POST example with request model")
.WithRequestModel(typeof(SimpleRequestModel)));
.WithRequestModel(typeof(SimpleRequestModel)).Build());

Describe["PostRequestWithNestedModel"] = desc => new SwaggerRouteMetadata(desc)
.With(info => info.WithResponseModel("200", typeof(SimpleResponseModel))
.With(info => SwaggerEndpointInfoBuilder.NewEndpointInfo(info).WithResponseModel("200", typeof(SimpleResponseModel))
.WithResponse("400", "Bad request")
.WithSummary("Simple POST example with nested request model")
.WithRequestModel(typeof(NestedRequestModel)));
.WithRequestModel(typeof(NestedRequestModel)).Build());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Nancy.Metadata.Swagger.DemoApplication</RootNamespace>
<AssemblyName>Nancy.Metadata.Swagger.DemoApplication</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
Expand Down Expand Up @@ -38,24 +38,20 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Nancy, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.1.2.0\lib\net40\Nancy.dll</HintPath>
<Private>True</Private>
<Reference Include="Nancy, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.2.0.0-clinteastwood\lib\net452\Nancy.dll</HintPath>
</Reference>
<Reference Include="Nancy.Hosting.Self, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Hosting.Self.1.2.0\lib\net40\Nancy.Hosting.Self.dll</HintPath>
<Private>True</Private>
<Reference Include="Nancy.Hosting.Self, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Hosting.Self.2.0.0-clinteastwood\lib\net452\Nancy.Hosting.Self.dll</HintPath>
</Reference>
<Reference Include="Nancy.Metadata.Modules, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Metadata.Modules.1.2.0\lib\net40\Nancy.Metadata.Modules.dll</HintPath>
<Private>True</Private>
<Reference Include="Nancy.Metadata.Modules, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Metadata.Modules.2.0.0-clinteastwood\lib\net452\Nancy.Metadata.Modules.dll</HintPath>
</Reference>
<Reference Include="Nancy.Serialization.JsonNet, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Serialization.JsonNet.1.2.0\lib\net40\Nancy.Serialization.JsonNet.dll</HintPath>
<Private>True</Private>
<Reference Include="Nancy.Serialization.JsonNet, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Serialization.JsonNet.2.0.0-clinteastwood\lib\net452\Nancy.Serialization.JsonNet.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
Expand Down Expand Up @@ -112,7 +108,9 @@
<Name>Nancy.Metadata.Swagger</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Analyzer Include="..\packages\AsyncUsageAnalyzers.1.0.0-alpha003\analyzers\dotnet\AsyncUsageAnalyzers.dll" />
</ItemGroup>
<ItemGroup>
<Content Include="Content\css\print.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
Expand Down
4 changes: 3 additions & 1 deletion Nancy.Metadata.Swagger.DemoApplication/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ static void Main()
{
string url = "http://localhost:5000";

NancyHost host = new NancyHost(new Uri(url));
var hostConfiguration = new HostConfiguration();
hostConfiguration.UrlReservations.CreateAutomatically = true;
NancyHost host = new NancyHost(new Uri(url), new DefaultNancyBootstrapper(), hostConfiguration);
host.Start();

Console.WriteLine("Nancy host is listening at {0}", url);
Expand Down
4 changes: 2 additions & 2 deletions Nancy.Metadata.Swagger.DemoApplication/app.config
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Expand Down
11 changes: 6 additions & 5 deletions Nancy.Metadata.Swagger.DemoApplication/packages.config
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Nancy" version="1.2.0" targetFramework="net45" />
<package id="Nancy.Hosting.Self" version="1.2.0" targetFramework="net45" />
<package id="Nancy.Metadata.Modules" version="1.2.0" targetFramework="net45" />
<package id="Nancy.Serialization.JsonNet" version="1.2.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net45" />
<package id="AsyncUsageAnalyzers" version="1.0.0-alpha003" targetFramework="net452" developmentDependency="true" />
<package id="Nancy" version="2.0.0-clinteastwood" targetFramework="net452" />
<package id="Nancy.Hosting.Self" version="2.0.0-clinteastwood" targetFramework="net452" />
<package id="Nancy.Metadata.Modules" version="2.0.0-clinteastwood" targetFramework="net452" />
<package id="Nancy.Serialization.JsonNet" version="2.0.0-clinteastwood" targetFramework="net452" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
</packages>
9 changes: 9 additions & 0 deletions Nancy.Metadata.Swagger/Core/IJsonSchemaGenerator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System;

namespace Nancy.Metadata.Swagger.Core
{
public interface IJsonSchemaGenerator
{
string GenerateSchema(Type modelType);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using Newtonsoft.Json.Schema.Generation;

namespace Nancy.Metadata.Swagger.Core
{
public class NewtonsoftJsonSchemaGeneratorAdapter : IJsonSchemaGenerator
{
private readonly JSchemaGenerator jsonSchemaGenerator;

public NewtonsoftJsonSchemaGeneratorAdapter(JSchemaGenerator jsonSchemaGenerator)
{
this.jsonSchemaGenerator = jsonSchemaGenerator;
}

public string GenerateSchema(Type modelType)
{
return jsonSchemaGenerator.Generate(modelType).ToString();
}
}
}
5 changes: 3 additions & 2 deletions Nancy.Metadata.Swagger/Core/SchemaCache.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using System.Collections.Generic;
using Newtonsoft.Json.Schema;

namespace Nancy.Metadata.Swagger.Core
{
using Newtonsoft.Json.Linq;

public static class SchemaCache
{
public static Dictionary<string, JSchema> Cache = new Dictionary<string, JSchema>();
public static Dictionary<string, JObject> Cache = new Dictionary<string, JObject>();
}
}
Loading