diff --git a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Helpers/ServiceCollectionExtensions.cs b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Helpers/ServiceCollectionExtensions.cs index d0105f3b..553a7419 100644 --- a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Helpers/ServiceCollectionExtensions.cs +++ b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Helpers/ServiceCollectionExtensions.cs @@ -45,6 +45,7 @@ public static IServiceCollection AddRequiredMvcComponents(this IServiceCollectio var mvcBuilder = services.AddMvcCore(options => { //options.Filters.Add(); }); + mvcBuilder.AddApiExplorer(); //for swagger mvcBuilder.SetCompatibilityVersion(CompatibilityVersion.Version_2_2); mvcBuilder.AddJsonFormatters(); return services; diff --git a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/O2NextGen.SmallTalk.Api.csproj b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/O2NextGen.SmallTalk.Api.csproj index 8dfa501e..7025f70e 100644 --- a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/O2NextGen.SmallTalk.Api.csproj +++ b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/O2NextGen.SmallTalk.Api.csproj @@ -19,6 +19,7 @@ 2.2.0 + diff --git a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Properties/launchSettings.json b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Properties/launchSettings.json index 8e982cfc..dacd9af9 100644 --- a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Properties/launchSettings.json +++ b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Properties/launchSettings.json @@ -12,7 +12,7 @@ "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "api/values", + "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } @@ -20,7 +20,7 @@ "O2NextGen.SmallTalk.Api": { "commandName": "Project", "launchBrowser": true, - "launchUrl": "api/values", + "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, diff --git a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Startup.cs b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Startup.cs index 78c15ca3..e9b3b783 100644 --- a/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Startup.cs +++ b/src/Services/smalltalk/O2NextGen.SmallTalk.Api/Startup.cs @@ -8,6 +8,7 @@ using Polly; using System; using System.Threading.Tasks; +using Swashbuckle.AspNetCore.Swagger; namespace O2NextGen.SmallTalk.Api { @@ -24,6 +25,17 @@ public void ConfigureServices(IServiceCollection services) { services.AddRequiredMvcComponents(); services.AddBusiness(); + services.AddSwaggerGen(options => + { + options.DescribeAllEnumsAsStrings(); + options.SwaggerDoc("v1", new Info() + { + Title = "O2NextGen Platform. SmallTalk HTTP API", + Version = "v1", + Description = "SmallTalk API Service. The service allows you to create chats", + TermsOfService = "Terms of Service" + }); + }); services.AddApplicationServices(Configuration); } @@ -39,12 +51,14 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) } app.UseStaticFiles(); + app.UseSwagger() + .UseSwaggerUI(c => { c.SwaggerEndpoint($"/swagger/v1/swagger.json", "SmallTalk API V1"); }); app.Use(async (context, next) => { context.Response.OnStarting(() => { - context.Response.Headers.Add("X-Power-By", "O2NextGen: SmallTalk Api"); + context.Response.Headers.Add("X-Power-By", "O2NextGen: SmallTalk API"); return Task.CompletedTask; }); @@ -54,9 +68,11 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) app.UseMvc(); } } + public static class ServiceCollectionExtensions { - public static IServiceCollection AddApplicationServices(this IServiceCollection services, IConfiguration configuration) + public static IServiceCollection AddApplicationServices(this IServiceCollection services, + IConfiguration configuration) { //register delegating handlers // services.AddTransient(); @@ -64,15 +80,13 @@ public static IServiceCollection AddApplicationServices(this IServiceCollection //register http services services - .AddHttpClient("Signal-R", client => - { - client.BaseAddress = new Uri(configuration.GetValue("urls:SignalRUrl")); - }) - .AddTransientHttpErrorPolicy(builder => builder.WaitAndRetryAsync(5, arrempt => TimeSpan.FromSeconds(arrempt * 2) - )); + .AddHttpClient("Signal-R", + client => { client.BaseAddress = new Uri(configuration.GetValue("urls:SignalRUrl")); }) + .AddTransientHttpErrorPolicy(builder => builder.WaitAndRetryAsync(5, + arrempt => TimeSpan.FromSeconds(arrempt * 2) + )); return services; } } - } - +} \ No newline at end of file