├── Developing-api-end-points ├── .gitignore ├── .idea │ └── .idea.Cms │ │ └── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── encodings.xml │ │ ├── indexLayout.xml │ │ └── vcs.xml ├── Cms.sln ├── build.cake ├── src │ └── Api │ │ ├── Behaviours │ │ ├── LoggingBehaviour.cs │ │ └── ValidationBehaviour.cs │ │ ├── Cms.csproj │ │ ├── Endpoints │ │ └── Article │ │ │ ├── Get │ │ │ ├── Get.Query.cs │ │ │ ├── Get.Response.cs │ │ │ └── Get.cs │ │ │ └── Routes.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── bin │ │ └── Debug │ │ │ ├── net5.0 │ │ │ ├── Ardalis.ApiEndpoints.dll │ │ │ ├── AutoMapper.Extensions.Microsoft.DependencyInjection.dll │ │ │ ├── AutoMapper.dll │ │ │ ├── Boleyn.Database.Entities.dll │ │ │ ├── Boleyn.Database.Postgre.dll │ │ │ ├── Cms │ │ │ ├── Cms.deps.json │ │ │ ├── Cms.dll │ │ │ ├── Cms.pdb │ │ │ ├── Cms.runtimeconfig.dev.json │ │ │ ├── Cms.runtimeconfig.json │ │ │ ├── Dapr.AspNetCore.dll │ │ │ ├── Dapr.Client.dll │ │ │ ├── Dawn.Guard.dll │ │ │ ├── FluentValidation.DependencyInjectionExtensions.dll │ │ │ ├── FluentValidation.dll │ │ │ ├── Google.Api.CommonProtos.dll │ │ │ ├── Google.Protobuf.dll │ │ │ ├── Grpc.Core.Api.dll │ │ │ ├── Grpc.Net.Client.dll │ │ │ ├── Grpc.Net.Common.dll │ │ │ ├── Humanizer.dll │ │ │ ├── MediatR.Extensions.Microsoft.DependencyInjection.dll │ │ │ ├── MediatR.dll │ │ │ ├── MethodBoundaryAspect.dll │ │ │ ├── Microsoft.DotNet.PlatformAbstractions.dll │ │ │ ├── Microsoft.EntityFrameworkCore.Abstractions.dll │ │ │ ├── Microsoft.EntityFrameworkCore.AutoHistory.dll │ │ │ ├── Microsoft.EntityFrameworkCore.Design.dll │ │ │ ├── Microsoft.EntityFrameworkCore.Relational.dll │ │ │ ├── Microsoft.EntityFrameworkCore.dll │ │ │ ├── Microsoft.Extensions.DependencyInjection.dll │ │ │ ├── Microsoft.Extensions.DependencyModel.dll │ │ │ ├── Microsoft.OpenApi.dll │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Npgsql.EntityFrameworkCore.PostgreSQL.dll │ │ │ ├── Npgsql.dll │ │ │ ├── Serilog.AspNetCore.dll │ │ │ ├── Serilog.Exceptions.dll │ │ │ ├── Serilog.Extensions.Hosting.dll │ │ │ ├── Serilog.Extensions.Logging.dll │ │ │ ├── Serilog.Formatting.Compact.dll │ │ │ ├── Serilog.Settings.Configuration.dll │ │ │ ├── Serilog.Sinks.Console.dll │ │ │ ├── Serilog.Sinks.Debug.dll │ │ │ ├── Serilog.Sinks.File.dll │ │ │ ├── Serilog.Sinks.PeriodicBatching.dll │ │ │ ├── Serilog.Sinks.Seq.dll │ │ │ ├── Serilog.dll │ │ │ ├── Swashbuckle.AspNetCore.Annotations.dll │ │ │ ├── Swashbuckle.AspNetCore.Swagger.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerGen.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerUI.dll │ │ │ ├── System.Diagnostics.DiagnosticSource.dll │ │ │ ├── Threenine.Data.dll │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ │ └── net7.0 │ │ │ ├── Ardalis.ApiEndpoints.dll │ │ │ ├── AutoMapper.Extensions.Microsoft.DependencyInjection.dll │ │ │ ├── AutoMapper.dll │ │ │ ├── Cms │ │ │ ├── Cms.deps.json │ │ │ ├── Cms.dll │ │ │ ├── Cms.pdb │ │ │ ├── Cms.runtimeconfig.json │ │ │ ├── FluentValidation.DependencyInjectionExtensions.dll │ │ │ ├── FluentValidation.dll │ │ │ ├── MediatR.Extensions.Microsoft.DependencyInjection.dll │ │ │ ├── MediatR.dll │ │ │ ├── Microsoft.DotNet.PlatformAbstractions.dll │ │ │ ├── Microsoft.EntityFrameworkCore.Abstractions.dll │ │ │ ├── Microsoft.EntityFrameworkCore.AutoHistory.dll │ │ │ ├── Microsoft.EntityFrameworkCore.Relational.dll │ │ │ ├── Microsoft.EntityFrameworkCore.dll │ │ │ ├── Microsoft.Extensions.DependencyModel.dll │ │ │ ├── Microsoft.OpenApi.dll │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Serilog.AspNetCore.dll │ │ │ ├── Serilog.Exceptions.dll │ │ │ ├── Serilog.Extensions.Hosting.dll │ │ │ ├── Serilog.Extensions.Logging.dll │ │ │ ├── Serilog.Formatting.Compact.dll │ │ │ ├── Serilog.Settings.Configuration.dll │ │ │ ├── Serilog.Sinks.Console.dll │ │ │ ├── Serilog.Sinks.Debug.dll │ │ │ ├── Serilog.Sinks.File.dll │ │ │ ├── Serilog.Sinks.PeriodicBatching.dll │ │ │ ├── Serilog.Sinks.Seq.dll │ │ │ ├── Serilog.dll │ │ │ ├── Swashbuckle.AspNetCore.Annotations.dll │ │ │ ├── Swashbuckle.AspNetCore.Swagger.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerGen.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerUI.dll │ │ │ ├── Threenine.Data.dll │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── obj │ │ ├── Cms.csproj.nuget.dgspec.json │ │ ├── Cms.csproj.nuget.g.props │ │ ├── Cms.csproj.nuget.g.targets │ │ ├── Debug │ │ ├── net5.0 │ │ │ ├── .NETCoreApp,Version=v5.0.AssemblyAttributes.cs │ │ │ ├── Cms.AssemblyInfo.cs │ │ │ ├── Cms.AssemblyInfoInputs.cache │ │ │ ├── Cms.GeneratedMSBuildEditorConfig.editorconfig │ │ │ ├── Cms.MvcApplicationPartsAssemblyInfo.cache │ │ │ ├── Cms.MvcApplicationPartsAssemblyInfo.cs │ │ │ ├── Cms.RazorTargetAssemblyInfo.cache │ │ │ ├── Cms.assets.cache │ │ │ ├── Cms.csproj.AssemblyReference.cache │ │ │ ├── Cms.csproj.CopyComplete │ │ │ ├── Cms.csproj.CoreCompileInputs.cache │ │ │ ├── Cms.csproj.FileListAbsolute.txt │ │ │ ├── Cms.csproj.Fody.CopyLocal.cache │ │ │ ├── Cms.dll │ │ │ ├── Cms.genruntimeconfig.cache │ │ │ ├── Cms.pdb │ │ │ ├── apphost │ │ │ ├── ref │ │ │ │ └── Cms.dll │ │ │ ├── refint │ │ │ │ └── Cms.dll │ │ │ └── staticwebassets │ │ │ │ ├── Cms.StaticWebAssets.Manifest.cache │ │ │ │ └── Cms.StaticWebAssets.Pack.cache │ │ └── net7.0 │ │ │ ├── .NETCoreApp,Version=v7.0.AssemblyAttributes.cs │ │ │ ├── Cms.AssemblyInfo.cs │ │ │ ├── Cms.AssemblyInfoInputs.cache │ │ │ ├── Cms.GeneratedMSBuildEditorConfig.editorconfig │ │ │ ├── Cms.MvcApplicationPartsAssemblyInfo.cache │ │ │ ├── Cms.MvcApplicationPartsAssemblyInfo.cs │ │ │ ├── Cms.assets.cache │ │ │ ├── Cms.csproj.AssemblyReference.cache │ │ │ ├── Cms.csproj.CopyComplete │ │ │ ├── Cms.csproj.CoreCompileInputs.cache │ │ │ ├── Cms.csproj.FileListAbsolute.txt │ │ │ ├── Cms.dll │ │ │ ├── Cms.genruntimeconfig.cache │ │ │ ├── Cms.pdb │ │ │ ├── apphost │ │ │ ├── ref │ │ │ └── Cms.dll │ │ │ ├── refint │ │ │ └── Cms.dll │ │ │ ├── staticwebassets.build.json │ │ │ └── staticwebassets │ │ │ ├── msbuild.build.Cms.props │ │ │ ├── msbuild.buildMultiTargeting.Cms.props │ │ │ └── msbuild.buildTransitive.Cms.props │ │ ├── project.assets.json │ │ ├── project.nuget.cache │ │ ├── project.packagespec.json │ │ └── rider.project.restore.info └── tests │ └── Api.Unit.Tests │ ├── Api.Unit.Tests.csproj │ ├── EndpointTests │ └── Article │ │ └── Get │ │ ├── GetTests.cs │ │ ├── HandlerTests.cs │ │ ├── MappingTests.cs │ │ └── ValidatorTests.cs │ └── obj │ ├── Api.Unit.Tests.csproj.nuget.dgspec.json │ ├── Api.Unit.Tests.csproj.nuget.g.props │ ├── Api.Unit.Tests.csproj.nuget.g.targets │ ├── Debug │ ├── net5.0 │ │ ├── .NETCoreApp,Version=v5.0.AssemblyAttributes.cs │ │ ├── Api.Unit.Tests.AssemblyInfo.cs │ │ ├── Api.Unit.Tests.AssemblyInfoInputs.cache │ │ ├── Api.Unit.Tests.GeneratedMSBuildEditorConfig.editorconfig │ │ ├── Api.Unit.Tests.assets.cache │ │ └── Api.Unit.Tests.csproj.AssemblyReference.cache │ └── net7.0 │ │ ├── .NETCoreApp,Version=v7.0.AssemblyAttributes.cs │ │ ├── Api.Unit.Tests.AssemblyInfo.cs │ │ ├── Api.Unit.Tests.AssemblyInfoInputs.cache │ │ ├── Api.Unit.Tests.GeneratedMSBuildEditorConfig.editorconfig │ │ ├── Api.Unit.Tests.assets.cache │ │ └── Api.Unit.Tests.csproj.AssemblyReference.cache │ ├── project.assets.json │ ├── project.nuget.cache │ ├── project.packagespec.json │ └── rider.project.restore.info ├── How-to-use-cake-with-rider └── HelloCake │ ├── .github │ └── workflows │ │ └── cake-build.yaml │ ├── .gitignore │ ├── Directory.Build.props │ ├── HelloCake.sln │ ├── README.md │ ├── build.cake │ ├── src │ ├── Api │ │ ├── Activities │ │ │ ├── Queries │ │ │ │ └── Hello │ │ │ │ │ ├── Hello.Handler.cs │ │ │ │ │ ├── Hello.Mapping.cs │ │ │ │ │ ├── Hello.Query.cs │ │ │ │ │ ├── Hello.Response.cs │ │ │ │ │ ├── Hello.Validator.cs │ │ │ │ │ └── Hello.cs │ │ │ └── Routes.cs │ │ ├── Api.csproj │ │ ├── Behaviours │ │ │ ├── LoggingBehaviour.cs │ │ │ └── ValidationBehaviour.cs │ │ ├── Exceptions │ │ │ ├── ApiException.cs │ │ │ └── NotFoundException.cs │ │ ├── Helpers │ │ │ └── JsonPatchDocumentFilter.cs │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Common │ │ ├── Common.csproj │ │ └── RegularExpressions.cs │ ├── Database │ │ ├── Database │ │ │ ├── Configurations │ │ │ │ └── .gitkeep │ │ │ ├── Database.csproj │ │ │ ├── HelloCakeContext.cs │ │ │ ├── HelloCakeContextFactory.cs │ │ │ ├── InternalConstants.cs │ │ │ ├── README.md │ │ │ ├── Validators │ │ │ │ └── .gitkeep │ │ │ └── appsettings.json │ │ └── Models │ │ │ ├── Data │ │ │ └── HelloCake.cs │ │ │ └── Models.csproj │ ├── Directory.Build.props │ └── Domain │ │ ├── Domain.csproj │ │ └── Domain1.cs │ └── tests │ ├── Integration │ ├── Asserts │ │ ├── Should_be_200_Ok.js │ │ ├── Should_be_201.js │ │ ├── Should_be_400.js │ │ ├── Should_be_404.js │ │ ├── Should_be_500.js │ │ └── Should_be_conflict.js │ ├── Integration.csproj │ └── Tests │ │ ├── .httpyac.json │ │ ├── Solutions │ │ └── solution-get-tests.http │ │ └── http-client.env.json │ └── Unit │ ├── Activities │ └── .gitkeep │ └── Unit.csproj ├── README.md ├── azure-key-vault-tutorial ├── .env ├── .github │ └── workflows │ │ └── cake-build.yaml ├── .gitignore ├── Directory.Build.props ├── Dockerfile ├── GitVersion.yml ├── README.md ├── VaultTutorialKV.sln ├── bitbucket-pipelines.yml ├── build.cake ├── docker-compose.yml ├── src │ ├── Api │ │ ├── Activities │ │ │ ├── Documents │ │ │ │ ├── Commands │ │ │ │ │ └── Post │ │ │ │ │ │ ├── Post.Command.cs │ │ │ │ │ │ ├── Post.Handler.cs │ │ │ │ │ │ ├── Post.Mapping.cs │ │ │ │ │ │ ├── Post.Response.cs │ │ │ │ │ │ ├── Post.Validator.cs │ │ │ │ │ │ └── Post.cs │ │ │ │ └── Routes.cs │ │ │ └── WhatYouGot │ │ │ │ ├── Queries │ │ │ │ └── Get │ │ │ │ │ ├── Get.Handler.cs │ │ │ │ │ ├── Get.Mapping.cs │ │ │ │ │ ├── Get.Query.cs │ │ │ │ │ ├── Get.Response.cs │ │ │ │ │ ├── Get.Validator.cs │ │ │ │ │ └── Get.cs │ │ │ │ └── Routes.cs │ │ ├── Api.csproj │ │ ├── Behaviours │ │ │ ├── LoggingBehaviour.cs │ │ │ └── ValidationBehaviour.cs │ │ ├── Exceptions │ │ │ ├── ApiException.cs │ │ │ └── NotFoundException.cs │ │ ├── Helpers │ │ │ └── JsonPatchDocumentFilter.cs │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Common │ │ ├── ApplicationConstants.cs │ │ ├── Common.csproj │ │ ├── KeyVaultSetting.cs │ │ └── RegularExpressions.cs │ ├── Database │ │ ├── Database │ │ │ ├── Configurations │ │ │ │ └── .gitkeep │ │ │ ├── Database.csproj │ │ │ ├── InternalConstants.cs │ │ │ ├── README.md │ │ │ ├── Validators │ │ │ │ └── .gitkeep │ │ │ ├── VaultTutorialKVContext.cs │ │ │ ├── VaultTutorialKVContextFactory.cs │ │ │ └── appsettings.json │ │ └── Models │ │ │ ├── Data │ │ │ └── VaultTutorialKV.cs │ │ │ └── Models.csproj │ ├── Directory.Build.props │ └── Domain │ │ ├── Domain.csproj │ │ └── Domain1.cs └── tests │ ├── Integration │ ├── Asserts │ │ ├── Should_be_200_Ok.js │ │ ├── Should_be_201.js │ │ ├── Should_be_400.js │ │ ├── Should_be_404.js │ │ ├── Should_be_500.js │ │ └── Should_be_conflict.js │ ├── Integration.csproj │ └── Tests │ │ ├── .httpyac.json │ │ ├── Solutions │ │ └── solution-get-tests.http │ │ └── http-client.env.json │ └── Unit │ ├── Activities │ └── .gitkeep │ └── Unit.csproj ├── how-to-create-websocket-server-dotnet ├── .gitignore ├── SampleWebSocket.sln └── src │ └── api │ ├── Activities │ ├── .gitkeep │ └── Sockets │ │ ├── Routes.cs │ │ └── SampleSocket │ │ └── Get.cs │ ├── ApiSocket.csproj │ ├── Behaviours │ ├── LoggingBehaviour.cs │ └── ValidationBehaviour.cs │ ├── Exceptions │ ├── ApiSocketException.cs │ └── NotFoundException.cs │ ├── Helpers │ └── JsonPatchDocumentFilter.cs │ ├── Middleware │ └── ExceptionHandlingMiddleware.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── README.md │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ └── Debug │ │ └── net7.0 │ │ ├── ApiSocket │ │ ├── ApiSocket.deps.json │ │ ├── ApiSocket.dll │ │ ├── ApiSocket.pdb │ │ ├── ApiSocket.runtimeconfig.json │ │ ├── Ardalis.ApiEndpoints.dll │ │ ├── AutoMapper.Extensions.Microsoft.DependencyInjection.dll │ │ ├── AutoMapper.dll │ │ ├── FluentValidation.AspNetCore.dll │ │ ├── FluentValidation.DependencyInjectionExtensions.dll │ │ ├── FluentValidation.dll │ │ ├── Humanizer.dll │ │ ├── MediatR.Contracts.dll │ │ ├── MediatR.dll │ │ ├── Microsoft.AspNetCore.Connections.Abstractions.dll │ │ ├── Microsoft.AspNetCore.JsonPatch.dll │ │ ├── Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll │ │ ├── Microsoft.AspNetCore.SignalR.Common.dll │ │ ├── Microsoft.EntityFrameworkCore.Abstractions.dll │ │ ├── Microsoft.EntityFrameworkCore.Design.dll │ │ ├── Microsoft.EntityFrameworkCore.Relational.dll │ │ ├── Microsoft.EntityFrameworkCore.dll │ │ ├── Microsoft.Extensions.DependencyModel.dll │ │ ├── Microsoft.Extensions.Features.dll │ │ ├── Microsoft.Extensions.Options.dll │ │ ├── Microsoft.OpenApi.dll │ │ ├── Mono.TextTemplating.dll │ │ ├── Newtonsoft.Json.Bson.dll │ │ ├── Newtonsoft.Json.dll │ │ ├── Npgsql.EntityFrameworkCore.PostgreSQL.dll │ │ ├── Npgsql.dll │ │ ├── Serilog.AspNetCore.dll │ │ ├── Serilog.Exceptions.dll │ │ ├── Serilog.Extensions.Hosting.dll │ │ ├── Serilog.Extensions.Logging.dll │ │ ├── Serilog.Formatting.Compact.dll │ │ ├── Serilog.Settings.Configuration.dll │ │ ├── Serilog.Sinks.Console.dll │ │ ├── Serilog.Sinks.Debug.dll │ │ ├── Serilog.Sinks.File.dll │ │ ├── Serilog.Sinks.PeriodicBatching.dll │ │ ├── Serilog.Sinks.Seq.dll │ │ ├── Serilog.dll │ │ ├── Swashbuckle.AspNetCore.Annotations.dll │ │ ├── Swashbuckle.AspNetCore.Swagger.dll │ │ ├── Swashbuckle.AspNetCore.SwaggerGen.dll │ │ ├── Swashbuckle.AspNetCore.SwaggerUI.dll │ │ ├── System.CodeDom.dll │ │ ├── Threenine.ApiResponse.dll │ │ ├── Threenine.Data.dll │ │ ├── Threenine.DataService.dll │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── obj │ ├── ApiSocket.csproj.nuget.dgspec.json │ ├── ApiSocket.csproj.nuget.g.props │ ├── ApiSocket.csproj.nuget.g.targets │ ├── Debug │ └── net7.0 │ │ ├── .NETCoreApp,Version=v7.0.AssemblyAttributes.cs │ │ ├── ApiSocket.AssemblyInfo.cs │ │ ├── ApiSocket.AssemblyInfoInputs.cache │ │ ├── ApiSocket.GeneratedMSBuildEditorConfig.editorconfig │ │ ├── ApiSocket.GlobalUsings.g.cs │ │ ├── ApiSocket.MvcApplicationPartsAssemblyInfo.cache │ │ ├── ApiSocket.MvcApplicationPartsAssemblyInfo.cs │ │ ├── ApiSocket.assets.cache │ │ ├── ApiSocket.csproj.AssemblyReference.cache │ │ ├── ApiSocket.csproj.CopyComplete │ │ ├── ApiSocket.csproj.CoreCompileInputs.cache │ │ ├── ApiSocket.csproj.FileListAbsolute.txt │ │ ├── ApiSocket.dll │ │ ├── ApiSocket.genruntimeconfig.cache │ │ ├── ApiSocket.pdb │ │ ├── apphost │ │ ├── ref │ │ └── ApiSocket.dll │ │ ├── refint │ │ └── ApiSocket.dll │ │ ├── staticwebassets.build.json │ │ └── staticwebassets │ │ ├── msbuild.build.ApiSocket.props │ │ ├── msbuild.buildMultiTargeting.ApiSocket.props │ │ └── msbuild.buildTransitive.ApiSocket.props │ ├── project.assets.json │ ├── project.nuget.cache │ ├── project.packagespec.json │ ├── rider.project.model.nuget.info │ └── rider.project.restore.info ├── how-to-manage-secrets-in-dotnet ├── README.md ├── article │ ├── README.md │ └── images │ │ ├── dotnet-secrets-help.png │ │ ├── list-user-secrets.png │ │ ├── secret-created.png │ │ ├── secrets-json.png │ │ └── setting-muliple-dotnet-secrets-help.png └── code │ └── AddressService │ ├── .env │ ├── .github │ └── workflows │ │ └── cake-build.yaml │ ├── .gitignore │ ├── AddressService.sln │ ├── Directory.Build.props │ ├── Dockerfile │ ├── GitVersion.yml │ ├── README.md │ ├── bitbucket-pipelines.yml │ ├── build.cake │ ├── docker-compose.yml │ ├── src │ ├── Api │ │ ├── Activities │ │ │ └── Addresses │ │ │ │ ├── Queries │ │ │ │ └── Get │ │ │ │ │ ├── Get.Handler.cs │ │ │ │ │ ├── Get.Mapping.cs │ │ │ │ │ ├── Get.Query.cs │ │ │ │ │ ├── Get.Response.cs │ │ │ │ │ ├── Get.Validator.cs │ │ │ │ │ └── Get.cs │ │ │ │ └── Routes.cs │ │ ├── Api.csproj │ │ ├── Behaviours │ │ │ ├── LoggingBehaviour.cs │ │ │ └── ValidationBehaviour.cs │ │ ├── Exceptions │ │ │ ├── ApiException.cs │ │ │ └── NotFoundException.cs │ │ ├── Helpers │ │ │ └── JsonPatchDocumentFilter.cs │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Common │ │ ├── AfdParameterBuilder.cs │ │ ├── Common.csproj │ │ ├── Constants.cs │ │ └── RegularExpressions.cs │ ├── Database │ │ ├── Database │ │ │ ├── AddressServiceContext.cs │ │ │ ├── AddressServiceContextFactory.cs │ │ │ ├── Configurations │ │ │ │ └── .gitkeep │ │ │ ├── Database.csproj │ │ │ ├── InternalConstants.cs │ │ │ ├── README.md │ │ │ ├── Validators │ │ │ │ └── .gitkeep │ │ │ └── appsettings.json │ │ └── Models │ │ │ ├── Data │ │ │ └── AddressService.cs │ │ │ └── Models.csproj │ ├── Directory.Build.props │ ├── Domain │ │ ├── Addresses.cs │ │ ├── AfdSettings.cs │ │ ├── Domain.csproj │ │ └── Item.cs │ └── Services │ │ ├── AddressProvider.cs │ │ ├── IAdressProvider.cs │ │ └── Services.csproj │ └── tests │ ├── Integration │ ├── Asserts │ │ ├── Should_be_200_Ok.js │ │ ├── Should_be_201.js │ │ ├── Should_be_400.js │ │ ├── Should_be_404.js │ │ ├── Should_be_500.js │ │ └── Should_be_conflict.js │ ├── Integration.csproj │ └── Tests │ │ ├── .httpyac.json │ │ ├── Solutions │ │ └── solution-get-tests.http │ │ └── http-client.env.json │ └── Unit │ ├── Activities │ ├── .gitkeep │ └── Addresses │ │ └── Get │ │ ├── GetTests.cs │ │ ├── HandlerTests.cs │ │ └── MappingTests.cs │ └── Unit.csproj ├── how-to-use-azure-blob-storage ├── .env ├── .github │ └── workflows │ │ └── cake-build.yaml ├── .gitignore ├── Directory.Build.props ├── Dockerfile ├── GitVersion.yml ├── README.md ├── VaultTutorialKV.sln ├── bitbucket-pipelines.yml ├── build.cake ├── docker-compose.yml ├── src │ ├── Api │ │ ├── Activities │ │ │ ├── Documents │ │ │ │ ├── Commands │ │ │ │ │ └── Post │ │ │ │ │ │ ├── Post.Command.cs │ │ │ │ │ │ ├── Post.Handler.cs │ │ │ │ │ │ ├── Post.Mapping.cs │ │ │ │ │ │ ├── Post.Response.cs │ │ │ │ │ │ ├── Post.Validator.cs │ │ │ │ │ │ └── Post.cs │ │ │ │ └── Routes.cs │ │ │ └── WhatYouGot │ │ │ │ ├── Queries │ │ │ │ └── Get │ │ │ │ │ ├── Get.Handler.cs │ │ │ │ │ ├── Get.Mapping.cs │ │ │ │ │ ├── Get.Query.cs │ │ │ │ │ ├── Get.Response.cs │ │ │ │ │ ├── Get.Validator.cs │ │ │ │ │ └── Get.cs │ │ │ │ └── Routes.cs │ │ ├── Api.csproj │ │ ├── Behaviours │ │ │ ├── LoggingBehaviour.cs │ │ │ └── ValidationBehaviour.cs │ │ ├── Exceptions │ │ │ ├── ApiException.cs │ │ │ └── NotFoundException.cs │ │ ├── Helpers │ │ │ └── JsonPatchDocumentFilter.cs │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Common │ │ ├── ApplicationConstants.cs │ │ ├── Common.csproj │ │ ├── KeyVaultSetting.cs │ │ └── RegularExpressions.cs │ ├── Database │ │ ├── Database │ │ │ ├── Configurations │ │ │ │ └── .gitkeep │ │ │ ├── Database.csproj │ │ │ ├── InternalConstants.cs │ │ │ ├── README.md │ │ │ ├── Validators │ │ │ │ └── .gitkeep │ │ │ ├── VaultTutorialKVContext.cs │ │ │ ├── VaultTutorialKVContextFactory.cs │ │ │ └── appsettings.json │ │ └── Models │ │ │ ├── Data │ │ │ └── VaultTutorialKV.cs │ │ │ └── Models.csproj │ ├── Directory.Build.props │ └── Domain │ │ ├── Domain.csproj │ │ └── Domain1.cs └── tests │ ├── Integration │ ├── Asserts │ │ ├── Should_be_200_Ok.js │ │ ├── Should_be_201.js │ │ ├── Should_be_400.js │ │ ├── Should_be_404.js │ │ ├── Should_be_500.js │ │ └── Should_be_conflict.js │ ├── Integration.csproj │ └── Tests │ │ ├── .httpyac.json │ │ ├── Activities │ │ ├── Documents │ │ │ ├── post-tests.http │ │ │ └── test.md │ │ └── WhatYouGot │ │ │ └── get-tests.http │ │ ├── Solutions │ │ └── solution-get-tests.http │ │ └── http-client.env.json │ └── Unit │ ├── Activities │ └── .gitkeep │ └── Unit.csproj ├── how-to-use-http-client-factory └── AddressService │ ├── .env │ ├── .github │ └── workflows │ │ └── cake-build.yaml │ ├── .gitignore │ ├── AddressService.sln │ ├── Directory.Build.props │ ├── Dockerfile │ ├── GitVersion.yml │ ├── README.md │ ├── bitbucket-pipelines.yml │ ├── build.cake │ ├── docker-compose.yml │ ├── src │ ├── Api │ │ ├── Activities │ │ │ └── Addresses │ │ │ │ ├── Queries │ │ │ │ └── Get │ │ │ │ │ ├── Get.Handler.cs │ │ │ │ │ ├── Get.Mapping.cs │ │ │ │ │ ├── Get.Query.cs │ │ │ │ │ ├── Get.Response.cs │ │ │ │ │ ├── Get.Validator.cs │ │ │ │ │ └── Get.cs │ │ │ │ └── Routes.cs │ │ ├── Api.csproj │ │ ├── Behaviours │ │ │ ├── LoggingBehaviour.cs │ │ │ └── ValidationBehaviour.cs │ │ ├── Exceptions │ │ │ ├── ApiException.cs │ │ │ └── NotFoundException.cs │ │ ├── Helpers │ │ │ └── JsonPatchDocumentFilter.cs │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Common │ │ ├── AfdParameterBuilder.cs │ │ ├── Common.csproj │ │ ├── Constants.cs │ │ └── RegularExpressions.cs │ ├── Database │ │ ├── Database │ │ │ ├── AddressServiceContext.cs │ │ │ ├── AddressServiceContextFactory.cs │ │ │ ├── Configurations │ │ │ │ └── .gitkeep │ │ │ ├── Database.csproj │ │ │ ├── InternalConstants.cs │ │ │ ├── README.md │ │ │ ├── Validators │ │ │ │ └── .gitkeep │ │ │ └── appsettings.json │ │ └── Models │ │ │ ├── Data │ │ │ └── AddressService.cs │ │ │ └── Models.csproj │ ├── Directory.Build.props │ ├── Domain │ │ ├── Addresses.cs │ │ ├── AfdSettings.cs │ │ ├── Domain.csproj │ │ └── Item.cs │ └── Services │ │ ├── AddressProvider.cs │ │ ├── IAdressProvider.cs │ │ └── Services.csproj │ └── tests │ ├── Integration │ ├── Asserts │ │ ├── Should_be_200_Ok.js │ │ ├── Should_be_201.js │ │ ├── Should_be_400.js │ │ ├── Should_be_404.js │ │ ├── Should_be_500.js │ │ └── Should_be_conflict.js │ ├── Integration.csproj │ └── Tests │ │ ├── .httpyac.json │ │ ├── Solutions │ │ └── solution-get-tests.http │ │ └── http-client.env.json │ └── Unit │ ├── Activities │ ├── .gitkeep │ └── Addresses │ │ └── Get │ │ ├── GetTests.cs │ │ ├── HandlerTests.cs │ │ └── MappingTests.cs │ └── Unit.csproj ├── images └── header.png └── old-tutorials.zip /Developing-api-end-points/.idea/.idea.Cms/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Rider ignored files 5 | /.idea.Cms.iml 6 | /contentModel.xml 7 | /projectSettingsUpdater.xml 8 | /modules.xml 9 | # Editor-based HTTP Client requests 10 | /httpRequests/ 11 | # Datasource local storage ignored files 12 | /dataSources/ 13 | /dataSources.local.xml 14 | -------------------------------------------------------------------------------- /Developing-api-end-points/.idea/.idea.Cms/.idea/.name: -------------------------------------------------------------------------------- 1 | Cms -------------------------------------------------------------------------------- /Developing-api-end-points/.idea/.idea.Cms/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Developing-api-end-points/.idea/.idea.Cms/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Developing-api-end-points/.idea/.idea.Cms/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/Endpoints/Article/Get/Get.Query.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace Cms.Endpoints.Article.Get; 4 | 5 | public class Query 6 | { 7 | [FromRoute(Name = "id")] public string Id { get; set; } 8 | [FromRoute(Name = "category")] public string Category { get; set; } 9 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/Endpoints/Article/Get/Get.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Cms.Endpoints.Article.Get; 4 | 5 | public class Response { 6 | public string Title { get; set; } 7 | public string Description { get; set; } 8 | public string Summary { get; set; } 9 | public string SubHeading { get; set; } 10 | public string Content { get; set; } 11 | public DateTime Published { get; set; } 12 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/Endpoints/Article/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Cms.Endpoints.Article 2 | { 3 | internal static partial class Routes 4 | { 5 | internal const string Article = "article"; 6 | } 7 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "profiles": { 4 | "cms": { 5 | "commandName": "Project", 6 | "dotnetRunMessages": "true", 7 | "launchBrowser": true, 8 | "launchUrl": "swagger", 9 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 10 | "environmentVariables": { 11 | "ASPNETCORE_ENVIRONMENT": "Development" 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Serilog": { 3 | "Using": [ "Serilog.Exceptions", "Serilog", "Serilog.Sinks.Console", "Serilog.Sinks.Seq" ], 4 | "MinimumLevel": "Information", 5 | "Override": { 6 | "Microsoft.AspNetCore": "Warning" 7 | }, 8 | "WriteTo": [ 9 | { 10 | "Name": "Console", 11 | "Args": { 12 | "outputTemplate": "{Timestamp:HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" 13 | } 14 | }, 15 | { 16 | "Name": "Seq", 17 | "Args": { 18 | "serverUrl": "http://localhost:5341", 19 | "apiKey": "none", 20 | "restrictedToMinimumLevel": "Verbose" 21 | } 22 | } 23 | ], 24 | "Enrich": [ 25 | "FromLogContext", 26 | "WithMachineName", 27 | "WithProcessId", 28 | "WithThreadId" 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Ardalis.ApiEndpoints.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Ardalis.ApiEndpoints.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/AutoMapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/AutoMapper.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Boleyn.Database.Entities.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Boleyn.Database.Entities.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Boleyn.Database.Postgre.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Boleyn.Database.Postgre.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.pdb -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "/home/gary/.dotnet/store/|arch|/|tfm|", 5 | "/home/gary/.nuget/packages" 6 | ] 7 | } 8 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Cms.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net5.0", 4 | "framework": { 5 | "name": "Microsoft.AspNetCore.App", 6 | "version": "5.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true, 10 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Dapr.AspNetCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Dapr.AspNetCore.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Dapr.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Dapr.Client.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Dawn.Guard.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Dawn.Guard.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/FluentValidation.DependencyInjectionExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/FluentValidation.DependencyInjectionExtensions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/FluentValidation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/FluentValidation.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Google.Api.CommonProtos.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Google.Api.CommonProtos.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Google.Protobuf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Google.Protobuf.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Core.Api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Core.Api.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Net.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Net.Client.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Net.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Grpc.Net.Common.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Humanizer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Humanizer.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/MediatR.Extensions.Microsoft.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/MediatR.Extensions.Microsoft.DependencyInjection.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/MediatR.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/MediatR.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/MethodBoundaryAspect.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/MethodBoundaryAspect.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.DotNet.PlatformAbstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.DotNet.PlatformAbstractions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Abstractions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.AutoHistory.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.AutoHistory.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Design.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Relational.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Relational.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyModel.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.OpenApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Microsoft.OpenApi.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Npgsql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Npgsql.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.AspNetCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.AspNetCore.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Exceptions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Exceptions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Extensions.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Extensions.Hosting.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Extensions.Logging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Extensions.Logging.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Formatting.Compact.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Formatting.Compact.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Settings.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Settings.Configuration.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Console.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Console.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Debug.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Debug.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.File.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.File.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.PeriodicBatching.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.PeriodicBatching.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Seq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.Sinks.Seq.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Serilog.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.Annotations.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.Annotations.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.Swagger.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.Swagger.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/System.Diagnostics.DiagnosticSource.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/System.Diagnostics.DiagnosticSource.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/Threenine.Data.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net5.0/Threenine.Data.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net5.0/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Ardalis.ApiEndpoints.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Ardalis.ApiEndpoints.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/AutoMapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/AutoMapper.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms.pdb -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Cms.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net7.0", 4 | "frameworks": [ 5 | { 6 | "name": "Microsoft.NETCore.App", 7 | "version": "7.0.0" 8 | }, 9 | { 10 | "name": "Microsoft.AspNetCore.App", 11 | "version": "7.0.0" 12 | } 13 | ], 14 | "configProperties": { 15 | "System.GC.Server": true, 16 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/FluentValidation.DependencyInjectionExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/FluentValidation.DependencyInjectionExtensions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/FluentValidation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/FluentValidation.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/MediatR.Extensions.Microsoft.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/MediatR.Extensions.Microsoft.DependencyInjection.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/MediatR.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/MediatR.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.DotNet.PlatformAbstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.DotNet.PlatformAbstractions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Abstractions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.AutoHistory.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.AutoHistory.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Relational.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Relational.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.Extensions.DependencyModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.Extensions.DependencyModel.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.OpenApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Microsoft.OpenApi.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.AspNetCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.AspNetCore.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Exceptions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Exceptions.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Extensions.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Extensions.Hosting.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Extensions.Logging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Extensions.Logging.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Formatting.Compact.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Formatting.Compact.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Settings.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Settings.Configuration.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Console.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Console.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Debug.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Debug.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.File.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.File.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.PeriodicBatching.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.PeriodicBatching.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Seq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.Sinks.Seq.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Serilog.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Annotations.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Annotations.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Swagger.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Swagger.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/Threenine.Data.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/bin/Debug/net7.0/Threenine.Data.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/bin/Debug/net7.0/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Cms.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")] 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | using System; 11 | using System.Reflection; 12 | 13 | [assembly: System.Reflection.AssemblyCompanyAttribute("Cms")] 14 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 15 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 16 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 17 | [assembly: System.Reflection.AssemblyProductAttribute("Cms")] 18 | [assembly: System.Reflection.AssemblyTitleAttribute("Cms")] 19 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 20 | 21 | // Generated by the MSBuild WriteCodeFragment class. 22 | 23 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4981fe6029bcd5b77a085ff03af3f7c7c97e52e2 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net5.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = true 5 | build_property.ProjectTypeGuids = 6 | build_property.InvariantGlobalization = 7 | build_property.PlatformNeutralAssembly = 8 | build_property.EnforceExtendedAnalyzerRules = 9 | build_property._SupportedPlatformList = Linux,macOS,Windows 10 | build_property.RootNamespace = Cms 11 | build_property.ProjectDir = /home/gary/Documents/garywoodfine/Blog-Tutorials/Developing-api-end-points/src/Api/ 12 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.MvcApplicationPartsAssemblyInfo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.MvcApplicationPartsAssemblyInfo.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.MvcApplicationPartsAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | using System; 11 | using System.Reflection; 12 | 13 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Ardalis.ApiEndpoints")] 14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Dapr.AspNetCore")] 15 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.Annotations")] 16 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")] 17 | 18 | // Generated by the MSBuild WriteCodeFragment class. 19 | 20 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.RazorTargetAssemblyInfo.cache: -------------------------------------------------------------------------------- 1 | 28557c52e3014ee6175dd20f4a3a5b1a4df1ea00 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.assets.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.csproj.CopyComplete -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 2b5d3af6c527c3a3e35c79b54a60165efd869bd7 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.genruntimeconfig.cache: -------------------------------------------------------------------------------- 1 | 8e02643c3c67c53d61e59d324b35a0f9c042c7d3 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/Cms.pdb -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/apphost: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/apphost -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/ref/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/ref/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/refint/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/refint/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/staticwebassets/Cms.StaticWebAssets.Manifest.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/staticwebassets/Cms.StaticWebAssets.Manifest.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net5.0/staticwebassets/Cms.StaticWebAssets.Pack.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net5.0/staticwebassets/Cms.StaticWebAssets.Pack.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")] 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | using System; 11 | using System.Reflection; 12 | 13 | [assembly: System.Reflection.AssemblyCompanyAttribute("Cms")] 14 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 15 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 16 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 17 | [assembly: System.Reflection.AssemblyProductAttribute("Cms")] 18 | [assembly: System.Reflection.AssemblyTitleAttribute("Cms")] 19 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 20 | 21 | // Generated by the MSBuild WriteCodeFragment class. 22 | 23 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4981fe6029bcd5b77a085ff03af3f7c7c97e52e2 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net7.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = true 5 | build_property.ProjectTypeGuids = 6 | build_property.InvariantGlobalization = 7 | build_property.PlatformNeutralAssembly = 8 | build_property.EnforceExtendedAnalyzerRules = 9 | build_property._SupportedPlatformList = Linux,macOS,Windows 10 | build_property.RootNamespace = Cms 11 | build_property.RootNamespace = Cms 12 | build_property.ProjectDir = /home/gary/Documents/garywoodfine/Blog-Tutorials/Developing-api-end-points/src/Api/ 13 | build_property.RazorLangVersion = 7.0 14 | build_property.SupportLocalizedComponentNames = 15 | build_property.GenerateRazorMetadataSourceChecksumAttributes = 16 | build_property.MSBuildProjectDirectory = /home/gary/Documents/garywoodfine/Blog-Tutorials/Developing-api-end-points/src/Api 17 | build_property._RazorSourceGeneratorDebug = 18 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.MvcApplicationPartsAssemblyInfo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.MvcApplicationPartsAssemblyInfo.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.MvcApplicationPartsAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | using System; 11 | using System.Reflection; 12 | 13 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Ardalis.ApiEndpoints")] 14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.Annotations")] 15 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")] 16 | 17 | // Generated by the MSBuild WriteCodeFragment class. 18 | 19 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.assets.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.csproj.CopyComplete -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 5aec21f652f3abd9526ad835464487141bd1d8c8 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.genruntimeconfig.cache: -------------------------------------------------------------------------------- 1 | 386d0b5cd6fec194bcb4220f89a9b551866dfa42 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/Cms.pdb -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/apphost: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/apphost -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/ref/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/ref/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/refint/Cms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/src/Api/obj/Debug/net7.0/refint/Cms.dll -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/staticwebassets.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": 1, 3 | "Hash": "XgD6ogTJ88vZvzl2XbXj4VVytD/WujkPsTt3ra6NDlg=", 4 | "Source": "Cms", 5 | "BasePath": "_content/Cms", 6 | "Mode": "Default", 7 | "ManifestType": "Build", 8 | "ReferencedProjectsConfiguration": [], 9 | "DiscoveryPatterns": [], 10 | "Assets": [] 11 | } -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/staticwebassets/msbuild.build.Cms.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/staticwebassets/msbuild.buildMultiTargeting.Cms.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/Debug/net7.0/staticwebassets/msbuild.buildTransitive.Cms.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /Developing-api-end-points/src/Api/obj/rider.project.restore.info: -------------------------------------------------------------------------------- 1 | 16708735449078271 -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/EndpointTests/Article/Get/HandlerTests.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Unit.Tests.EndpointTests.Article.Get 2 | { 3 | public class HandlerTests 4 | { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/EndpointTests/Article/Get/ValidatorTests.cs: -------------------------------------------------------------------------------- 1 | using Cms.Endpoints.Article.Get; 2 | using FluentValidation.TestHelper; 3 | using Xunit; 4 | 5 | namespace Api.Unit.Tests.EndpointTests.Article.Get 6 | { 7 | public class ValidatorTests 8 | { 9 | private readonly Validator _validator; 10 | public ValidatorTests() 11 | { 12 | _validator = new Validator(); 13 | } 14 | 15 | [Fact(DisplayName = "Should have a validation error for empty id")] 16 | 17 | public void Should_have_validation_error_for_empty_id() 18 | { 19 | var query = new Query(); 20 | var result = _validator.TestValidate(query); 21 | result.ShouldHaveValidationErrorFor(x => x.Id); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = ".NET 5.0")] 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | d322e82ec4825f1bca23c6bd8d98a4bf54d97f7f 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net5.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = 5 | build_property.ProjectTypeGuids = 6 | build_property.InvariantGlobalization = 7 | build_property.PlatformNeutralAssembly = 8 | build_property.EnforceExtendedAnalyzerRules = 9 | build_property._SupportedPlatformList = Linux,macOS,Windows 10 | build_property.RootNamespace = Api.Unit.Tests 11 | build_property.ProjectDir = /home/gary/Documents/garywoodfine/Blog-Tutorials/Developing-api-end-points/tests/Api.Unit.Tests/ 12 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.assets.cache -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net5.0/Api.Unit.Tests.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")] 5 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | d322e82ec4825f1bca23c6bd8d98a4bf54d97f7f 2 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net7.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = 5 | build_property.ProjectTypeGuids = 6 | build_property.InvariantGlobalization = 7 | build_property.PlatformNeutralAssembly = 8 | build_property.EnforceExtendedAnalyzerRules = 9 | build_property._SupportedPlatformList = Linux,macOS,Windows 10 | build_property.RootNamespace = Api.Unit.Tests 11 | build_property.ProjectDir = /home/gary/Documents/garywoodfine/Blog-Tutorials/Developing-api-end-points/tests/Api.Unit.Tests/ 12 | -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.assets.cache -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/Developing-api-end-points/tests/Api.Unit.Tests/obj/Debug/net7.0/Api.Unit.Tests.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /Developing-api-end-points/tests/Api.Unit.Tests/obj/rider.project.restore.info: -------------------------------------------------------------------------------- 1 | 16708735448998266 -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/.github/workflows/cake-build.yaml: -------------------------------------------------------------------------------- 1 | name: cake-build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v1 15 | with: 16 | dotnet-version: 6.0.x 17 | - name: Check out Code 18 | uses: actions/checkout@v2 19 | with: 20 | fetch-depth: 0 21 | - name: Run cake 22 | shell : bash 23 | env: 24 | GITHUB_TOKEN: ${{ github.token }} 25 | REGISTRY_TOKEN: ${{ github.token }} #TODO: By default we use the Github Token, change to your preferred secret 26 | CONTAINER_REGISTRY: "ghcr.io" 27 | run: | 28 | dotnet new tool-manifest 29 | dotnet tool install Cake.Tool 30 | dotnet tool restore 31 | dotnet cake -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | net7 4 | true 5 | false 6 | true 7 | enable 8 | disable 9 | Threenine 10 | 11 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/README.md: -------------------------------------------------------------------------------- 1 | # HelloCake 2 | 3 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Queries/Hello/Hello.Handler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using AutoMapper; 7 | using MediatR; 8 | using Threenine.ApiResponse; 9 | 10 | 11 | namespace Namespace.Activities.Resource.Queries.Hello; 12 | 13 | public class Handler : IRequestHandler> 14 | { 15 | public Handler() 16 | { 17 | 18 | } 19 | 20 | public async Task> Handle(Query request, CancellationToken cancellationToken) 21 | { 22 | await Task.Delay(5, cancellationToken); 23 | return new SingleResponse(new Response{ Name = "Cake"}); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Queries/Hello/Hello.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | 3 | 4 | namespace Namespace.Activities.Resource.Queries.Hello; 5 | 6 | public class Mapping: Profile 7 | { 8 | public Mapping() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Queries/Hello/Hello.Query.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MediatR; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Threenine.ApiResponse; 5 | 6 | namespace Namespace.Activities.Resource.Queries.Hello; 7 | 8 | public class Query : IRequest> 9 | { 10 | 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Queries/Hello/Hello.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Namespace.Activities.Resource.Queries.Hello; 4 | 5 | public class Response 6 | { 7 | public string Name { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Queries/Hello/Hello.Validator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using FluentValidation; 3 | 4 | namespace Namespace.Activities.Resource.Queries.Hello; 5 | 6 | public class Validator : AbstractValidator 7 | { 8 | public Validator() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Activities/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Resource = "Resource"; 5 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Exceptions/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Exceptions 4 | { 5 | public class ApiException : Exception 6 | { 7 | public ApiException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace Api.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Api": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AllowedHosts": "*" 3 | 4 | } 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Common/RegularExpressions.cs: -------------------------------------------------------------------------------- 1 | namespace Common; 2 | 3 | public static class RegularExpressions 4 | { 5 | /// 6 | /// A permissive input ensuring on some special characters are omitted 7 | /// 8 | public const string AcceptableNameCharactersOnly = @"^[^""±!@£$%^&*_+§¡€#¢§¶•ªº«\\/<>?:;|=.,\n]+$"; 9 | 10 | /// 11 | /// A general Organisation nme validator 12 | /// 13 | public const string OrganisationNameValidator = @"^[A-Z]+[\w\d\s]*$"; 14 | 15 | /// 16 | /// Provides validation for regular Internet Domain structure 17 | /// 18 | public const string DomainName = @"\A([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\Z"; 19 | 20 | /// 21 | /// Common relative path structure validation 22 | /// 23 | public const string RelativeUrlPath = @"^([\/][a-zA-Z]+)+\.*(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?$"; 24 | 25 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/Configurations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/How-to-use-cake-with-rider/HelloCake/src/Database/Database/Configurations/.gitkeep -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/HelloCakeContext.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using Microsoft.EntityFrameworkCore; 3 | using Threenine.Configurations.PostgreSql; 4 | using Threenine; 5 | 6 | namespace Database.HelloCakes; 7 | 8 | public class HelloCakeContext : BaseContext 9 | { 10 | public HelloCakeContext(DbContextOptions options) 11 | : base(options) 12 | { 13 | } 14 | 15 | protected override void OnModelCreating(ModelBuilder modelBuilder) 16 | { 17 | modelBuilder.HasDefaultSchema(DefaultSchema.Name); 18 | modelBuilder.HasPostgresExtension(PostgreExtensions.UUIDGenerator); 19 | modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); 20 | } 21 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/HelloCakeContextFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace Database.HelloCakes; 6 | 7 | internal class HelloCakeContextFactory : IDesignTimeDbContextFactory 8 | { 9 | public HelloCakeContext CreateDbContext(string[] args) 10 | { 11 | DbContextOptionsBuilder dbContextOptionsBuilder = 12 | new(); 13 | 14 | dbContextOptionsBuilder.UseNpgsql(ConnectionStringNames.LocalBuild); 15 | return new HelloCakeContext(dbContextOptionsBuilder.Options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/InternalConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Database.HelloCakes; 2 | 3 | internal static class ConnectionStringNames 4 | { 5 | /// 6 | /// A default of localBuild is provided this can be any abitraty value as this will ensure 7 | /// the migrations are created using an ephemeral in memory database. If you want to use an actual database 8 | /// to create migrations then this value can be changed to the name of a Connection string. 9 | /// 10 | internal const string LocalBuild = "localBuild"; 11 | } 12 | 13 | internal static class DefaultSchema 14 | { 15 | internal const string Name = "HelloCake"; 16 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/README.md: -------------------------------------------------------------------------------- 1 | ## Recreate a Migration 2 | 3 | 4 | >Remove the existing files from the Migrations folder 5 | 6 | >execute the following command - cd into the database project folder 7 | dotnet ef migrations add initial -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/Validators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/How-to-use-cake-with-rider/HelloCake/src/Database/Database/Validators/.gitkeep -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Database/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "localBuild": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Solution;Integrated Security=SSPI" 4 | } 5 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Models/Data/HelloCake.cs: -------------------------------------------------------------------------------- 1 | public class HelloCake 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Database/Models/Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Domain/Domain.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/src/Domain/Domain1.cs: -------------------------------------------------------------------------------- 1 | namespace DTOs; 2 | 3 | public class Domain1 4 | { 5 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_200_Ok.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 200", () => { 3 | client.assert(response.status === 200, "HTTP Response status code is not 200"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_201.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 201", () => { 3 | client.assert(response.status === 201, "HTTP Response status code is not 201"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_400.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 400", () => { 3 | client.assert(response.status === 400, "HTTP Response status code is not 400, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_404.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with Not Found 404", () => { 3 | client.assert(response.status === 404, "HTTP Response status code is not 404"); 4 | }); 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_500.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 500", () => { 3 | client.assert(response.status === 500, "HTTP Response status code is not 500, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Asserts/Should_be_conflict.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Unsuccessful request with Conflict Exception 409", () => { 3 | client.assert(response.status === 409, "HTTP Response status code is not 409"); 4 | }); 5 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Tests/.httpyac.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "https": { 4 | "rejectUnauthorized": false 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Tests/Solutions/solution-get-tests.http: -------------------------------------------------------------------------------- 1 | ### TODO: Add your integration tests here 2 | 3 | 4 | ### Get Tests 5 | GET {{host}}/{{solution_resource_name}}/ 6 | accept: application/json 7 | Content-Type: application/json 8 | 9 | > ../../Asserts/Should_be_200_Ok.js 10 | 11 | ### 12 | 13 | 14 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Integration/Tests/http-client.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "host": "http://localhost:5000", 4 | "soltuion_resource_name": "solution" 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /How-to-use-cake-with-rider/HelloCake/tests/Unit/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/How-to-use-cake-with-rider/HelloCake/tests/Unit/Activities/.gitkeep -------------------------------------------------------------------------------- /azure-key-vault-tutorial/.env: -------------------------------------------------------------------------------- 1 | POSTGRES_USER=VaultTutorialKV 2 | POSTGRES_PASSWORD=Password12@ 3 | POSTGRES_DB=VaultTutorialKV 4 | PGDATA: /data/postgres 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/.github/workflows/cake-build.yaml: -------------------------------------------------------------------------------- 1 | name: cake-build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v1 15 | with: 16 | dotnet-version: 6.0.x 17 | - name: Check out Code 18 | uses: actions/checkout@v2 19 | with: 20 | fetch-depth: 0 21 | - name: Run cake 22 | shell : bash 23 | env: 24 | GITHUB_TOKEN: ${{ github.token }} 25 | REGISTRY_TOKEN: ${{ github.token }} #TODO: By default we use the Github Token, change to your preferred secret 26 | CONTAINER_REGISTRY: "ghcr.io" 27 | run: | 28 | dotnet new tool-manifest 29 | dotnet tool install Cake.Tool 30 | dotnet tool restore 31 | dotnet cake -------------------------------------------------------------------------------- /azure-key-vault-tutorial/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | net7.0 4 | true 5 | false 6 | true 7 | enable 8 | disable 9 | Threenine 10 | 11 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/Dockerfile: -------------------------------------------------------------------------------- 1 | ### RUNTIME CONTAINER 2 | FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime 3 | WORKDIR /app 4 | COPY .publish/ ./ 5 | 6 | ENTRYPOINT ["dotnet", "api.dll"] 7 | 8 | 9 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/GitVersion.yml: -------------------------------------------------------------------------------- 1 | mode: Mainline 2 | branches: 3 | main: 4 | tag: '' 5 | increment: inherit 6 | source-branches: 7 | - master 8 | is-release-branch: true 9 | feature: 10 | increment: Minor 11 | tag: alpha 12 | release: 13 | increment: Minor 14 | tag: beta 15 | is-release-branch: false 16 | hotfix: 17 | increment: Patch 18 | tag: beta 19 | ignore: 20 | sha: [ ] -------------------------------------------------------------------------------- /azure-key-vault-tutorial/README.md: -------------------------------------------------------------------------------- 1 | # VaultTutorialKV 2 | 3 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/bitbucket-pipelines.yml: -------------------------------------------------------------------------------- 1 | image: mcr.microsoft.com/dotnet/sdk:6.0 2 | clone: 3 | lfs: true 4 | depth: full 5 | pipelines: 6 | default: 7 | - step: 8 | name: Build 9 | services: 10 | - docker 11 | script: 12 | - dotnet new tool-manifest 13 | - dotnet tool install Cake.Tool 14 | - dotnet cake -------------------------------------------------------------------------------- /azure-key-vault-tutorial/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | seq: 4 | container_name: vaulttutorialkv_seq 5 | image: datalust/seq:latest 6 | ports: 7 | - 80:80 8 | - 5341:5341 9 | environment: 10 | ACCEPT_EULA: Y 11 | networks: 12 | - vaulttutorialkv 13 | postgres: 14 | container_name: vaulttutorialkv_postgre 15 | image: postgres 16 | env_file: 17 | - .env 18 | 19 | volumes: 20 | - postgres:/data/postgres 21 | ports: 22 | - "5432:5432" 23 | networks: 24 | - vaulttutorialkv 25 | restart: unless-stopped 26 | networks: 27 | vaulttutorialkv: 28 | driver: bridge 29 | volumes: 30 | postgres: -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/Documents/Commands/Post/Post.Command.cs: -------------------------------------------------------------------------------- 1 | using MediatR; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Threenine.ApiResponse; 4 | 5 | namespace Threenine.Activities.Documents.Commands.Post; 6 | 7 | public class Command : IRequest> 8 | { 9 | [FromBody] public IFormFile File { get; set; } 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/Documents/Commands/Post/Post.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | 3 | namespace Threenine.Activities.Documents.Commands.Post; 4 | 5 | public class Mapping: Profile 6 | { 7 | public Mapping() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/Documents/Commands/Post/Post.Response.cs: -------------------------------------------------------------------------------- 1 | namespace Threenine.Activities.Documents.Commands.Post; 2 | 3 | public class Response 4 | { 5 | public string Tag { get; set; } 6 | public string StatusCode { get; set; } 7 | public string Reason { get; set; } 8 | public DateTime Created { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/Documents/Commands/Post/Post.Validator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | 3 | namespace Threenine.Activities.Documents.Commands.Post; 4 | 5 | public class Validator : AbstractValidator 6 | { 7 | public Validator() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/Documents/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Documents = "Documents"; 5 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Queries/Get/Get.Handler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using AutoMapper; 7 | using Azure.Security.KeyVault.Secrets; 8 | using MediatR; 9 | using Threenine.ApiResponse; 10 | 11 | 12 | namespace Api.Activities.WhatYouGot.Queries.Get; 13 | 14 | public class Handler : IRequestHandler> 15 | { 16 | private readonly SecretClient _secretClient; 17 | 18 | 19 | public Handler(SecretClient secretClient) 20 | { 21 | _secretClient = secretClient; 22 | 23 | } 24 | 25 | public async Task> Handle(Query request, CancellationToken cancellationToken) 26 | { 27 | var secret = await _secretClient.GetSecretAsync("SecretKey", cancellationToken: cancellationToken); 28 | return new SingleResponse(new Response{ WhatYouGot = secret.Value.Value }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Queries/Get/Get.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | 3 | 4 | namespace Api.Activities.WhatYouGot.Queries.Get; 5 | 6 | public class Mapping: Profile 7 | { 8 | public Mapping() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Queries/Get/Get.Query.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MediatR; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Threenine.ApiResponse; 5 | 6 | namespace Api.Activities.WhatYouGot.Queries.Get; 7 | 8 | public class Query : IRequest> 9 | { 10 | 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Queries/Get/Get.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Activities.WhatYouGot.Queries.Get; 4 | 5 | public class Response 6 | { 7 | public string WhatYouGot { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Queries/Get/Get.Validator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using FluentValidation; 3 | 4 | namespace Api.Activities.WhatYouGot.Queries.Get; 5 | 6 | public class Validator : AbstractValidator 7 | { 8 | public Validator() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Activities/WhatYouGot/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string WhatYouGot = "WhatYouGot"; 5 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Exceptions/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Exceptions 4 | { 5 | public class ApiException : Exception 6 | { 7 | public ApiException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace Api.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Api": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "KeyVault": { 3 | "Vault": "VaultTutorialKV-dev" 4 | }, 5 | "AllowedHosts": "*", 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Common/ApplicationConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Threenine; 2 | 3 | public class ApplicationConstants 4 | { 5 | public const string KeyVault = "KeyVault"; 6 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Common/KeyVaultSetting.cs: -------------------------------------------------------------------------------- 1 |  2 | public class KeyVaultSettings 3 | { 4 | public string? Vault { get; set; } 5 | 6 | } 7 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Common/RegularExpressions.cs: -------------------------------------------------------------------------------- 1 | namespace Common; 2 | 3 | public static class RegularExpressions 4 | { 5 | /// 6 | /// A permissive input ensuring on some special characters are omitted 7 | /// 8 | public const string AcceptableNameCharactersOnly = @"^[^""±!@£$%^&*_+§¡€#¢§¶•ªº«\\/<>?:;|=.,\n]+$"; 9 | 10 | /// 11 | /// A general Organisation nme validator 12 | /// 13 | public const string OrganisationNameValidator = @"^[A-Z]+[\w\d\s]*$"; 14 | 15 | /// 16 | /// Provides validation for regular Internet Domain structure 17 | /// 18 | public const string DomainName = @"\A([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\Z"; 19 | 20 | /// 21 | /// Common relative path structure validation 22 | /// 23 | public const string RelativeUrlPath = @"^([\/][a-zA-Z]+)+\.*(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?$"; 24 | 25 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/Configurations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/azure-key-vault-tutorial/src/Database/Database/Configurations/.gitkeep -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/Database.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/InternalConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Database.VaultTutorialKVs; 2 | 3 | internal static class ConnectionStringNames 4 | { 5 | /// 6 | /// A default of localBuild is provided this can be any abitraty value as this will ensure 7 | /// the migrations are created using an ephemeral in memory database. If you want to use an actual database 8 | /// to create migrations then this value can be changed to the name of a Connection string. 9 | /// 10 | internal const string LocalBuild = "localBuild"; 11 | } 12 | 13 | internal static class DefaultSchema 14 | { 15 | internal const string Name = "VaultTutorialKV"; 16 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/README.md: -------------------------------------------------------------------------------- 1 | ## Recreate a Migration 2 | 3 | 4 | >Remove the existing files from the Migrations folder 5 | 6 | >execute the following command - cd into the database project folder 7 | dotnet ef migrations add initial -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/Validators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/azure-key-vault-tutorial/src/Database/Database/Validators/.gitkeep -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/VaultTutorialKVContext.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using Microsoft.EntityFrameworkCore; 3 | using Threenine.Configurations.PostgreSql; 4 | using Threenine; 5 | 6 | namespace Database.VaultTutorialKVs; 7 | 8 | public class VaultTutorialKVContext : BaseContext 9 | { 10 | public VaultTutorialKVContext(DbContextOptions options) 11 | : base(options) 12 | { 13 | } 14 | 15 | protected override void OnModelCreating(ModelBuilder modelBuilder) 16 | { 17 | modelBuilder.HasDefaultSchema(DefaultSchema.Name); 18 | modelBuilder.HasPostgresExtension(PostgreExtensions.UUIDGenerator); 19 | modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); 20 | } 21 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/VaultTutorialKVContextFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace Database.VaultTutorialKVs; 6 | 7 | internal class VaultTutorialKVContextFactory : IDesignTimeDbContextFactory 8 | { 9 | public VaultTutorialKVContext CreateDbContext(string[] args) 10 | { 11 | DbContextOptionsBuilder dbContextOptionsBuilder = 12 | new(); 13 | 14 | dbContextOptionsBuilder.UseNpgsql(ConnectionStringNames.LocalBuild); 15 | return new VaultTutorialKVContext(dbContextOptionsBuilder.Options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Database/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "localBuild": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Solution;Integrated Security=SSPI" 4 | } 5 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Models/Data/VaultTutorialKV.cs: -------------------------------------------------------------------------------- 1 | public class VaultTutorialKV 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Database/Models/Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Domain/Domain.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/src/Domain/Domain1.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Domain1 4 | { 5 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_200_Ok.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 200", () => { 3 | client.assert(response.status === 200, "HTTP Response status code is not 200"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_201.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 201", () => { 3 | client.assert(response.status === 201, "HTTP Response status code is not 201"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_400.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 400", () => { 3 | client.assert(response.status === 400, "HTTP Response status code is not 400, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_404.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with Not Found 404", () => { 3 | client.assert(response.status === 404, "HTTP Response status code is not 404"); 4 | }); 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_500.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 500", () => { 3 | client.assert(response.status === 500, "HTTP Response status code is not 500, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Asserts/Should_be_conflict.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Unsuccessful request with Conflict Exception 409", () => { 3 | client.assert(response.status === 409, "HTTP Response status code is not 409"); 4 | }); 5 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Tests/.httpyac.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "https": { 4 | "rejectUnauthorized": false 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Tests/Solutions/solution-get-tests.http: -------------------------------------------------------------------------------- 1 | ### TODO: Add your integration tests here 2 | 3 | 4 | ### Get Tests 5 | GET {{host}}/{{solution_resource_name}}/ 6 | accept: application/json 7 | Content-Type: application/json 8 | 9 | > ../../Asserts/Should_be_200_Ok.js 10 | 11 | ### 12 | 13 | 14 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Integration/Tests/http-client.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "host": "http://localhost:5000", 4 | "soltuion_resource_name": "solution" 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /azure-key-vault-tutorial/tests/Unit/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/azure-key-vault-tutorial/tests/Unit/Activities/.gitkeep -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/Activities/.gitkeep -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/Activities/Sockets/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Sockets = "Sockets"; 5 | } -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/Exceptions/ApiSocketException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ApiSocket.Exceptions 4 | { 5 | public class ApiSocketException : Exception 6 | { 7 | public ApiSocketException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace ApiSocket.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiSocketException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "https": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/README.md: -------------------------------------------------------------------------------- 1 | ## ApiSocket -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Serilog": { 3 | "MinimumLevel": "Information", 4 | "Override": { 5 | "Microsoft.AspNetCore": "Warning" 6 | }, 7 | "WriteTo": [ 8 | { 9 | "Name": "Console", 10 | "Args": { 11 | "outputTemplate": "{Timestamp:HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Application} {Message}{NewLine}{Exception}" 12 | } 13 | } 14 | ], 15 | "Enrich": [ 16 | "FromLogContext", 17 | "WithMachineName", 18 | "WithProcessId", 19 | "WithThreadId" 20 | ], 21 | "Properties": { 22 | "Application" : "ApiSocket" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AllowedHosts": "*", 3 | 4 | } 5 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.pdb -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/ApiSocket.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net7.0", 4 | "frameworks": [ 5 | { 6 | "name": "Microsoft.NETCore.App", 7 | "version": "7.0.0" 8 | }, 9 | { 10 | "name": "Microsoft.AspNetCore.App", 11 | "version": "7.0.0" 12 | } 13 | ], 14 | "configProperties": { 15 | "System.GC.Server": true, 16 | "System.Reflection.NullabilityInfoContext.IsSupported": true, 17 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Ardalis.ApiEndpoints.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Ardalis.ApiEndpoints.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/AutoMapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/AutoMapper.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.AspNetCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.AspNetCore.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.DependencyInjectionExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.DependencyInjectionExtensions.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/FluentValidation.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Humanizer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Humanizer.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/MediatR.Contracts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/MediatR.Contracts.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/MediatR.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/MediatR.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.Connections.Abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.Connections.Abstractions.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.JsonPatch.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.JsonPatch.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.SignalR.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.AspNetCore.SignalR.Common.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Abstractions.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Design.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Relational.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Relational.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.DependencyModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.DependencyModel.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.Features.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.Features.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.Options.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.Extensions.Options.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.OpenApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Microsoft.OpenApi.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Mono.TextTemplating.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Mono.TextTemplating.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Newtonsoft.Json.Bson.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Newtonsoft.Json.Bson.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Npgsql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Npgsql.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.AspNetCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.AspNetCore.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Exceptions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Exceptions.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Extensions.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Extensions.Hosting.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Extensions.Logging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Extensions.Logging.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Formatting.Compact.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Formatting.Compact.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Settings.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Settings.Configuration.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Console.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Console.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Debug.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Debug.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.File.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.File.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.PeriodicBatching.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.PeriodicBatching.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Seq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.Sinks.Seq.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Serilog.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Annotations.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Annotations.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Swagger.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.Swagger.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/System.CodeDom.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/System.CodeDom.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.ApiResponse.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.ApiResponse.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.Data.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.Data.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.DataService.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/Threenine.DataService.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Serilog": { 3 | "MinimumLevel": "Information", 4 | "Override": { 5 | "Microsoft.AspNetCore": "Warning" 6 | }, 7 | "WriteTo": [ 8 | { 9 | "Name": "Console", 10 | "Args": { 11 | "outputTemplate": "{Timestamp:HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Application} {Message}{NewLine}{Exception}" 12 | } 13 | } 14 | ], 15 | "Enrich": [ 16 | "FromLogContext", 17 | "WithMachineName", 18 | "WithProcessId", 19 | "WithThreadId" 20 | ], 21 | "Properties": { 22 | "Application" : "ApiSocket" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/bin/Debug/net7.0/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AllowedHosts": "*", 3 | 4 | } 5 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")] 5 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 5e5c16b731f51c78bc199c8decaa2f903c5cad2e 2 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.GlobalUsings.g.cs: -------------------------------------------------------------------------------- 1 | // 2 | global using global::Microsoft.AspNetCore.Builder; 3 | global using global::Microsoft.AspNetCore.Hosting; 4 | global using global::Microsoft.AspNetCore.Http; 5 | global using global::Microsoft.AspNetCore.Routing; 6 | global using global::Microsoft.Extensions.Configuration; 7 | global using global::Microsoft.Extensions.DependencyInjection; 8 | global using global::Microsoft.Extensions.Hosting; 9 | global using global::Microsoft.Extensions.Logging; 10 | global using global::System; 11 | global using global::System.Collections.Generic; 12 | global using global::System.IO; 13 | global using global::System.Linq; 14 | global using global::System.Net.Http; 15 | global using global::System.Net.Http.Json; 16 | global using global::System.Threading; 17 | global using global::System.Threading.Tasks; 18 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.MvcApplicationPartsAssemblyInfo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.MvcApplicationPartsAssemblyInfo.cache -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.assets.cache -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.CopyComplete -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 1077babeac3216bfae1d36bafec1a8348da6b8cf 2 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.genruntimeconfig.cache: -------------------------------------------------------------------------------- 1 | ee69193354dbc771c337060e339209927259e52f 2 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ApiSocket.pdb -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/apphost: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/apphost -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ref/ApiSocket.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/ref/ApiSocket.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/refint/ApiSocket.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/refint/ApiSocket.dll -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/staticwebassets.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": 1, 3 | "Hash": "oSjtjkrovRoVwl9ZJ0QJO3JApUIJd9e+piT9XuyWfmw=", 4 | "Source": "ApiSocket", 5 | "BasePath": "_content/ApiSocket", 6 | "Mode": "Default", 7 | "ManifestType": "Build", 8 | "ReferencedProjectsConfiguration": [], 9 | "DiscoveryPatterns": [], 10 | "Assets": [] 11 | } -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/staticwebassets/msbuild.build.ApiSocket.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/staticwebassets/msbuild.buildMultiTargeting.ApiSocket.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/Debug/net7.0/staticwebassets/msbuild.buildTransitive.ApiSocket.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/rider.project.model.nuget.info: -------------------------------------------------------------------------------- 1 | 16942852800447090 -------------------------------------------------------------------------------- /how-to-create-websocket-server-dotnet/src/api/obj/rider.project.restore.info: -------------------------------------------------------------------------------- 1 | 16942852800447090 -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/article/images/dotnet-secrets-help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/article/images/dotnet-secrets-help.png -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/article/images/list-user-secrets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/article/images/list-user-secrets.png -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/article/images/secret-created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/article/images/secret-created.png -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/article/images/secrets-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/article/images/secrets-json.png -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/article/images/setting-muliple-dotnet-secrets-help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/article/images/setting-muliple-dotnet-secrets-help.png -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/.env: -------------------------------------------------------------------------------- 1 | POSTGRES_USER=AddressService 2 | POSTGRES_PASSWORD=Password12@ 3 | POSTGRES_DB=AddressService 4 | PGDATA: /data/postgres 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/.github/workflows/cake-build.yaml: -------------------------------------------------------------------------------- 1 | name: cake-build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v1 15 | with: 16 | dotnet-version: 6.0.x 17 | - name: Check out Code 18 | uses: actions/checkout@v2 19 | with: 20 | fetch-depth: 0 21 | - name: Run cake 22 | shell : bash 23 | env: 24 | GITHUB_TOKEN: ${{ github.token }} 25 | REGISTRY_TOKEN: ${{ github.token }} #TODO: By default we use the Github Token, change to your preferred secret 26 | CONTAINER_REGISTRY: "ghcr.io" 27 | run: | 28 | dotnet new tool-manifest 29 | dotnet tool install Cake.Tool 30 | dotnet tool restore 31 | dotnet cake -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6 4 | true 5 | false 6 | true 7 | enable 8 | disable 9 | Threenine 10 | 11 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/Dockerfile: -------------------------------------------------------------------------------- 1 | ### RUNTIME CONTAINER 2 | FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime 3 | WORKDIR /app 4 | COPY .publish/ ./ 5 | 6 | ENTRYPOINT ["dotnet", "api.dll"] 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/GitVersion.yml: -------------------------------------------------------------------------------- 1 | mode: Mainline 2 | branches: 3 | main: 4 | tag: '' 5 | increment: inherit 6 | source-branches: 7 | - master 8 | is-release-branch: true 9 | feature: 10 | increment: Minor 11 | tag: alpha 12 | release: 13 | increment: Minor 14 | tag: beta 15 | is-release-branch: false 16 | hotfix: 17 | increment: Patch 18 | tag: beta 19 | ignore: 20 | sha: [ ] -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/README.md: -------------------------------------------------------------------------------- 1 | # AddressService 2 | 3 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/bitbucket-pipelines.yml: -------------------------------------------------------------------------------- 1 | image: mcr.microsoft.com/dotnet/sdk:6.0 2 | clone: 3 | lfs: true 4 | depth: full 5 | pipelines: 6 | default: 7 | - step: 8 | name: Build 9 | services: 10 | - docker 11 | script: 12 | - dotnet new tool-manifest 13 | - dotnet tool install Cake.Tool 14 | - dotnet cake -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | seq: 4 | container_name: addressservice_seq 5 | image: datalust/seq:latest 6 | ports: 7 | - 80:80 8 | - 5341:5341 9 | environment: 10 | ACCEPT_EULA: Y 11 | networks: 12 | - addressservice 13 | postgres: 14 | container_name: addressservice_postgre 15 | image: postgres 16 | env_file: 17 | - .env 18 | 19 | volumes: 20 | - postgres:/data/postgres 21 | ports: 22 | - "5432:5432" 23 | networks: 24 | - addressservice 25 | restart: unless-stopped 26 | networks: 27 | addressservice: 28 | driver: bridge 29 | volumes: 30 | postgres: -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using Domain; 3 | 4 | 5 | namespace Threenine.Activities.Addresses.Queries.Get; 6 | 7 | public class Mapping: Profile 8 | { 9 | public Mapping() 10 | { 11 | 12 | CreateMap() 13 | .ForMember(dest => dest.Postcode, opt => opt.MapFrom(src => src.Postcode)) 14 | .ForMember(dest => dest.AddressLine1, opt => opt.MapFrom(src => src.Street)) 15 | .ForMember(dest => dest.AddressLine2, opt => opt.MapFrom(src => src.Locality)) 16 | .ForMember(dest => dest.City, opt => opt.MapFrom(src => src.Town)) 17 | .ForMember(dest => dest.County, opt => opt.MapFrom(src => src.OptionalCounty)) 18 | .ForMember(dest => dest.Organisation, opt => opt.MapFrom(src => src.Organisation)) 19 | .ForMember(dest => dest.Property, opt => opt.MapFrom(src => src.Property)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Query.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MediatR; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Threenine.ApiResponse; 5 | 6 | namespace Threenine.Activities.Addresses.Queries.Get; 7 | 8 | public class Query : IRequest> 9 | { 10 | [FromQuery(Name = "postCode")] public string PostCode { get; set; } 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Threenine.Activities.Addresses.Queries.Get; 4 | 5 | public class Response 6 | { 7 | public Address[] Addresses { get; set; } 8 | } 9 | 10 | public class Address 11 | { 12 | public string AddressLine1 { get; set; } 13 | public string AddressLine2 { get; set; } 14 | public string Postcode { get; set; } 15 | public string City { get; set; } 16 | public string County { get; set; } 17 | public string Property { get; set; } 18 | public string Organisation { get; set; } 19 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Validator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Common; 3 | using FluentValidation; 4 | 5 | namespace Threenine.Activities.Addresses.Queries.Get; 6 | 7 | public class Validator : AbstractValidator 8 | { 9 | public Validator() 10 | { 11 | RuleFor(x => x.PostCode).NotEmpty(); 12 | 13 | RuleFor(x => x.PostCode).Matches(RegularExpressions.PostCodeValidator) 14 | .WithMessage("Valid UK postcode required"); 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Activities/Addresses/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Addresses = "Addresses"; 5 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Exceptions/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Exceptions 4 | { 5 | public class ApiException : Exception 6 | { 7 | public ApiException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace Api.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Api": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AllowedHosts": "*", 3 | "AfdSettings": { 4 | "Endpoint": "https://pce.afd.co.uk/afddata.pce", 5 | "Data": "Address", 6 | "CountryISO": "GBR", 7 | "Serial": "", 8 | "Password": "", 9 | "Task": "fastfind", 10 | "Format":"json", 11 | "Fields": "simple" 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Common/Constants.cs: -------------------------------------------------------------------------------- 1 | namespace Common; 2 | 3 | public static class Constants 4 | { 5 | public const string AfdSettings = "AfdSettings"; 6 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/AddressServiceContext.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using Microsoft.EntityFrameworkCore; 3 | using Threenine.Configurations.PostgreSql; 4 | using Threenine; 5 | 6 | namespace Database.AddressServices; 7 | 8 | public class AddressServiceContext : BaseContext 9 | { 10 | public AddressServiceContext(DbContextOptions options) 11 | : base(options) 12 | { 13 | } 14 | 15 | protected override void OnModelCreating(ModelBuilder modelBuilder) 16 | { 17 | modelBuilder.HasDefaultSchema(DefaultSchema.Name); 18 | modelBuilder.HasPostgresExtension(PostgreExtensions.UUIDGenerator); 19 | modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); 20 | } 21 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/AddressServiceContextFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace Database.AddressServices; 6 | 7 | internal class AddressServiceContextFactory : IDesignTimeDbContextFactory 8 | { 9 | public AddressServiceContext CreateDbContext(string[] args) 10 | { 11 | DbContextOptionsBuilder dbContextOptionsBuilder = 12 | new(); 13 | 14 | dbContextOptionsBuilder.UseNpgsql(ConnectionStringNames.LocalBuild); 15 | return new AddressServiceContext(dbContextOptionsBuilder.Options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/Configurations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/Configurations/.gitkeep -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/InternalConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Database.AddressServices; 2 | 3 | internal static class ConnectionStringNames 4 | { 5 | /// 6 | /// A default of localBuild is provided this can be any abitraty value as this will ensure 7 | /// the migrations are created using an ephemeral in memory database. If you want to use an actual database 8 | /// to create migrations then this value can be changed to the name of a Connection string. 9 | /// 10 | internal const string LocalBuild = "localBuild"; 11 | } 12 | 13 | internal static class DefaultSchema 14 | { 15 | internal const string Name = "AddressService"; 16 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/README.md: -------------------------------------------------------------------------------- 1 | ## Recreate a Migration 2 | 3 | 4 | >Remove the existing files from the Migrations folder 5 | 6 | >execute the following command - cd into the database project folder 7 | dotnet ef migrations add initial -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/Validators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/Validators/.gitkeep -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Database/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "localBuild": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Solution;Integrated Security=SSPI" 4 | } 5 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Models/Data/AddressService.cs: -------------------------------------------------------------------------------- 1 | public class AddressService 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Database/Models/Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Domain/Addresses.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Source 4 | { 5 | public string Result { get; set; } 6 | public string ErrorText { get; set; } 7 | public Item[] Item { get; set; } 8 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Domain/AfdSettings.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class AfdSettings 4 | { 5 | public string Endpoint { get; set; } 6 | public string Data { get; set; } 7 | public string CountryISO { get; set; } 8 | public string Serial { get; set; } 9 | public string Password { get; set; } 10 | public string Task { get; set; } 11 | public string Format { get; set; } 12 | public string Fields { get; set; } 13 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Domain/Domain.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Domain/Item.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Item 4 | { 5 | public string value { get; set; } 6 | public string Postcode { get; set; } 7 | public string Organisation { get; set; } 8 | public string Property { get; set; } 9 | public string Street { get; set; } 10 | public string Locality { get; set; } 11 | public string Town { get; set; } 12 | public string OptionalCounty { get; set; } 13 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Services/IAdressProvider.cs: -------------------------------------------------------------------------------- 1 | using Domain; 2 | 3 | namespace Services; 4 | 5 | public interface IAddressDataProvider 6 | { 7 | Task GetByPostCode(string postcode, CancellationToken cancellationToken); 8 | 9 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/src/Services/Services.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_200_Ok.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 200", () => { 3 | client.assert(response.status === 200, "HTTP Response status code is not 200"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_201.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 201", () => { 3 | client.assert(response.status === 201, "HTTP Response status code is not 201"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_400.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 400", () => { 3 | client.assert(response.status === 400, "HTTP Response status code is not 400, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_404.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with Not Found 404", () => { 3 | client.assert(response.status === 404, "HTTP Response status code is not 404"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_500.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 500", () => { 3 | client.assert(response.status === 500, "HTTP Response status code is not 500, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Asserts/Should_be_conflict.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Unsuccessful request with Conflict Exception 409", () => { 3 | client.assert(response.status === 409, "HTTP Response status code is not 409"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Tests/.httpyac.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "https": { 4 | "rejectUnauthorized": false 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Tests/Solutions/solution-get-tests.http: -------------------------------------------------------------------------------- 1 | ### TODO: Add your integration tests here 2 | 3 | 4 | ### Get Tests 5 | GET {{host}}/{{solution_resource_name}}/ 6 | accept: application/json 7 | Content-Type: application/json 8 | 9 | > ../../Asserts/Should_be_200_Ok.js 10 | 11 | ### 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Integration/Tests/http-client.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "host": "http://localhost:5000", 4 | "soltuion_resource_name": "solution" 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /how-to-manage-secrets-in-dotnet/code/AddressService/tests/Unit/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-manage-secrets-in-dotnet/code/AddressService/tests/Unit/Activities/.gitkeep -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/.env: -------------------------------------------------------------------------------- 1 | POSTGRES_USER=VaultTutorialKV 2 | POSTGRES_PASSWORD=Password12@ 3 | POSTGRES_DB=VaultTutorialKV 4 | PGDATA: /data/postgres 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/.github/workflows/cake-build.yaml: -------------------------------------------------------------------------------- 1 | name: cake-build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v1 15 | with: 16 | dotnet-version: 6.0.x 17 | - name: Check out Code 18 | uses: actions/checkout@v2 19 | with: 20 | fetch-depth: 0 21 | - name: Run cake 22 | shell : bash 23 | env: 24 | GITHUB_TOKEN: ${{ github.token }} 25 | REGISTRY_TOKEN: ${{ github.token }} #TODO: By default we use the Github Token, change to your preferred secret 26 | CONTAINER_REGISTRY: "ghcr.io" 27 | run: | 28 | dotnet new tool-manifest 29 | dotnet tool install Cake.Tool 30 | dotnet tool restore 31 | dotnet cake -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | net7.0 4 | true 5 | false 6 | true 7 | enable 8 | disable 9 | Threenine 10 | 11 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/Dockerfile: -------------------------------------------------------------------------------- 1 | ### RUNTIME CONTAINER 2 | FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime 3 | WORKDIR /app 4 | COPY .publish/ ./ 5 | 6 | ENTRYPOINT ["dotnet", "api.dll"] 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/GitVersion.yml: -------------------------------------------------------------------------------- 1 | mode: Mainline 2 | branches: 3 | main: 4 | tag: '' 5 | increment: inherit 6 | source-branches: 7 | - master 8 | is-release-branch: true 9 | feature: 10 | increment: Minor 11 | tag: alpha 12 | release: 13 | increment: Minor 14 | tag: beta 15 | is-release-branch: false 16 | hotfix: 17 | increment: Patch 18 | tag: beta 19 | ignore: 20 | sha: [ ] -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/README.md: -------------------------------------------------------------------------------- 1 | # VaultTutorialKV 2 | 3 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/bitbucket-pipelines.yml: -------------------------------------------------------------------------------- 1 | image: mcr.microsoft.com/dotnet/sdk:6.0 2 | clone: 3 | lfs: true 4 | depth: full 5 | pipelines: 6 | default: 7 | - step: 8 | name: Build 9 | services: 10 | - docker 11 | script: 12 | - dotnet new tool-manifest 13 | - dotnet tool install Cake.Tool 14 | - dotnet cake -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | seq: 4 | container_name: vaulttutorialkv_seq 5 | image: datalust/seq:latest 6 | ports: 7 | - 80:80 8 | - 5341:5341 9 | environment: 10 | ACCEPT_EULA: Y 11 | networks: 12 | - vaulttutorialkv 13 | postgres: 14 | container_name: vaulttutorialkv_postgre 15 | image: postgres 16 | env_file: 17 | - .env 18 | 19 | volumes: 20 | - postgres:/data/postgres 21 | ports: 22 | - "5432:5432" 23 | networks: 24 | - vaulttutorialkv 25 | restart: unless-stopped 26 | networks: 27 | vaulttutorialkv: 28 | driver: bridge 29 | volumes: 30 | postgres: -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/Documents/Commands/Post/Post.Command.cs: -------------------------------------------------------------------------------- 1 | using MediatR; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Threenine.ApiResponse; 4 | 5 | namespace Threenine.Activities.Documents.Commands.Post; 6 | 7 | public class Command : IRequest> 8 | { 9 | [FromBody] public IFormFile File { get; set; } 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/Documents/Commands/Post/Post.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | 3 | namespace Threenine.Activities.Documents.Commands.Post; 4 | 5 | public class Mapping: Profile 6 | { 7 | public Mapping() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/Documents/Commands/Post/Post.Response.cs: -------------------------------------------------------------------------------- 1 | namespace Threenine.Activities.Documents.Commands.Post; 2 | 3 | public class Response 4 | { 5 | public string Tag { get; set; } 6 | public string StatusCode { get; set; } 7 | public string Reason { get; set; } 8 | public DateTime Created { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/Documents/Commands/Post/Post.Validator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | 3 | namespace Threenine.Activities.Documents.Commands.Post; 4 | 5 | public class Validator : AbstractValidator 6 | { 7 | public Validator() 8 | { 9 | RuleFor(x => x.File).NotNull().NotEmpty(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/Documents/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Documents = "Documents"; 5 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Queries/Get/Get.Handler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using AutoMapper; 7 | using Azure.Security.KeyVault.Secrets; 8 | using MediatR; 9 | using Threenine.ApiResponse; 10 | 11 | 12 | namespace Api.Activities.WhatYouGot.Queries.Get; 13 | 14 | public class Handler : IRequestHandler> 15 | { 16 | private readonly SecretClient _secretClient; 17 | 18 | 19 | public Handler(SecretClient secretClient) 20 | { 21 | _secretClient = secretClient; 22 | 23 | } 24 | 25 | public async Task> Handle(Query request, CancellationToken cancellationToken) 26 | { 27 | var secret = await _secretClient.GetSecretAsync("SecretKey", cancellationToken: cancellationToken); 28 | return new SingleResponse(new Response{ WhatYouGot = secret.Value.Value }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Queries/Get/Get.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | 3 | 4 | namespace Api.Activities.WhatYouGot.Queries.Get; 5 | 6 | public class Mapping: Profile 7 | { 8 | public Mapping() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Queries/Get/Get.Query.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MediatR; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Threenine.ApiResponse; 5 | 6 | namespace Api.Activities.WhatYouGot.Queries.Get; 7 | 8 | public class Query : IRequest> 9 | { 10 | 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Queries/Get/Get.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Activities.WhatYouGot.Queries.Get; 4 | 5 | public class Response 6 | { 7 | public string WhatYouGot { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Queries/Get/Get.Validator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using FluentValidation; 3 | 4 | namespace Api.Activities.WhatYouGot.Queries.Get; 5 | 6 | public class Validator : AbstractValidator 7 | { 8 | public Validator() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Activities/WhatYouGot/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string WhatYouGot = "WhatYouGot"; 5 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Exceptions/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Exceptions 4 | { 5 | public class ApiException : Exception 6 | { 7 | public ApiException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace Api.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Api": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "KeyVault": { 3 | "Vault": "VaultTutorialKV-dev" 4 | }, 5 | "AllowedHosts": "*", 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Common/ApplicationConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Threenine; 2 | 3 | public class ApplicationConstants 4 | { 5 | public const string KeyVault = "KeyVault"; 6 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Common/KeyVaultSetting.cs: -------------------------------------------------------------------------------- 1 |  2 | public class KeyVaultSettings 3 | { 4 | public string? Vault { get; set; } 5 | 6 | } 7 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Common/RegularExpressions.cs: -------------------------------------------------------------------------------- 1 | namespace Common; 2 | 3 | public static class RegularExpressions 4 | { 5 | /// 6 | /// A permissive input ensuring on some special characters are omitted 7 | /// 8 | public const string AcceptableNameCharactersOnly = @"^[^""±!@£$%^&*_+§¡€#¢§¶•ªº«\\/<>?:;|=.,\n]+$"; 9 | 10 | /// 11 | /// A general Organisation nme validator 12 | /// 13 | public const string OrganisationNameValidator = @"^[A-Z]+[\w\d\s]*$"; 14 | 15 | /// 16 | /// Provides validation for regular Internet Domain structure 17 | /// 18 | public const string DomainName = @"\A([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\Z"; 19 | 20 | /// 21 | /// Common relative path structure validation 22 | /// 23 | public const string RelativeUrlPath = @"^([\/][a-zA-Z]+)+\.*(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?$"; 24 | 25 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/Configurations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-azure-blob-storage/src/Database/Database/Configurations/.gitkeep -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/InternalConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Database.VaultTutorialKVs; 2 | 3 | internal static class ConnectionStringNames 4 | { 5 | /// 6 | /// A default of localBuild is provided this can be any abitraty value as this will ensure 7 | /// the migrations are created using an ephemeral in memory database. If you want to use an actual database 8 | /// to create migrations then this value can be changed to the name of a Connection string. 9 | /// 10 | internal const string LocalBuild = "localBuild"; 11 | } 12 | 13 | internal static class DefaultSchema 14 | { 15 | internal const string Name = "VaultTutorialKV"; 16 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/README.md: -------------------------------------------------------------------------------- 1 | ## Recreate a Migration 2 | 3 | 4 | >Remove the existing files from the Migrations folder 5 | 6 | >execute the following command - cd into the database project folder 7 | dotnet ef migrations add initial -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/Validators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-azure-blob-storage/src/Database/Database/Validators/.gitkeep -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/VaultTutorialKVContext.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using Microsoft.EntityFrameworkCore; 3 | using Threenine.Configurations.PostgreSql; 4 | using Threenine; 5 | 6 | namespace Database.VaultTutorialKVs; 7 | 8 | public class VaultTutorialKVContext : BaseContext 9 | { 10 | public VaultTutorialKVContext(DbContextOptions options) 11 | : base(options) 12 | { 13 | } 14 | 15 | protected override void OnModelCreating(ModelBuilder modelBuilder) 16 | { 17 | modelBuilder.HasDefaultSchema(DefaultSchema.Name); 18 | modelBuilder.HasPostgresExtension(PostgreExtensions.UUIDGenerator); 19 | modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); 20 | } 21 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/VaultTutorialKVContextFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace Database.VaultTutorialKVs; 6 | 7 | internal class VaultTutorialKVContextFactory : IDesignTimeDbContextFactory 8 | { 9 | public VaultTutorialKVContext CreateDbContext(string[] args) 10 | { 11 | DbContextOptionsBuilder dbContextOptionsBuilder = 12 | new(); 13 | 14 | dbContextOptionsBuilder.UseNpgsql(ConnectionStringNames.LocalBuild); 15 | return new VaultTutorialKVContext(dbContextOptionsBuilder.Options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Database/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "localBuild": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Solution;Integrated Security=SSPI" 4 | } 5 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Models/Data/VaultTutorialKV.cs: -------------------------------------------------------------------------------- 1 | public class VaultTutorialKV 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Database/Models/Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Domain/Domain.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/src/Domain/Domain1.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Domain1 4 | { 5 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_200_Ok.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 200", () => { 3 | client.assert(response.status === 200, "HTTP Response status code is not 200"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_201.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 201", () => { 3 | client.assert(response.status === 201, "HTTP Response status code is not 201"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_400.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 400", () => { 3 | client.assert(response.status === 400, "HTTP Response status code is not 400, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_404.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with Not Found 404", () => { 3 | client.assert(response.status === 404, "HTTP Response status code is not 404"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_500.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 500", () => { 3 | client.assert(response.status === 500, "HTTP Response status code is not 500, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Asserts/Should_be_conflict.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Unsuccessful request with Conflict Exception 409", () => { 3 | client.assert(response.status === 409, "HTTP Response status code is not 409"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/.httpyac.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "https": { 4 | "rejectUnauthorized": false 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/Activities/Documents/post-tests.http: -------------------------------------------------------------------------------- 1 | 2 | POST {{host}}/{{documnets_resource_name}} 3 | accept: text/plain 4 | Content-Type: multipart/form-data; boundary=WebAppBoundary 5 | 6 | --WebAppBoundary 7 | Content-Disposition: form-data; name="File"; filename="test.md" 8 | 9 | < test.md 10 | 11 | --WebAppBoundary-- 12 | 13 | > ../../../Asserts/Should_be_201.js 14 | 15 | ### 16 | 17 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/Activities/Documents/test.md: -------------------------------------------------------------------------------- 1 | ## This is the test document -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/Activities/WhatYouGot/get-tests.http: -------------------------------------------------------------------------------- 1 | 2 | GET {{host}}/{{what_you_got_resource_name}} 3 | accept: text/plain 4 | 5 | > ../../../Asserts/Should_be_200_Ok.js 6 | ### 7 | 8 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/Solutions/solution-get-tests.http: -------------------------------------------------------------------------------- 1 | ### TODO: Add your integration tests here 2 | 3 | 4 | ### Get Tests 5 | GET {{host}}/{{solution_resource_name}}/ 6 | accept: application/json 7 | Content-Type: application/json 8 | 9 | > ../../Asserts/Should_be_200_Ok.js 10 | 11 | ### 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Integration/Tests/http-client.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "host": "http://localhost:5000", 4 | "documnets_resource_name": "documents", 5 | "what_you_got_resource_name": "whatyougot" 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /how-to-use-azure-blob-storage/tests/Unit/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-azure-blob-storage/tests/Unit/Activities/.gitkeep -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/.env: -------------------------------------------------------------------------------- 1 | POSTGRES_USER=AddressService 2 | POSTGRES_PASSWORD=Password12@ 3 | POSTGRES_DB=AddressService 4 | PGDATA: /data/postgres 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/.github/workflows/cake-build.yaml: -------------------------------------------------------------------------------- 1 | name: cake-build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v1 15 | with: 16 | dotnet-version: 6.0.x 17 | - name: Check out Code 18 | uses: actions/checkout@v2 19 | with: 20 | fetch-depth: 0 21 | - name: Run cake 22 | shell : bash 23 | env: 24 | GITHUB_TOKEN: ${{ github.token }} 25 | REGISTRY_TOKEN: ${{ github.token }} #TODO: By default we use the Github Token, change to your preferred secret 26 | CONTAINER_REGISTRY: "ghcr.io" 27 | run: | 28 | dotnet new tool-manifest 29 | dotnet tool install Cake.Tool 30 | dotnet tool restore 31 | dotnet cake -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6 4 | true 5 | false 6 | true 7 | enable 8 | disable 9 | Threenine 10 | 11 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/Dockerfile: -------------------------------------------------------------------------------- 1 | ### RUNTIME CONTAINER 2 | FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime 3 | WORKDIR /app 4 | COPY .publish/ ./ 5 | 6 | ENTRYPOINT ["dotnet", "api.dll"] 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/GitVersion.yml: -------------------------------------------------------------------------------- 1 | mode: Mainline 2 | branches: 3 | main: 4 | tag: '' 5 | increment: inherit 6 | source-branches: 7 | - master 8 | is-release-branch: true 9 | feature: 10 | increment: Minor 11 | tag: alpha 12 | release: 13 | increment: Minor 14 | tag: beta 15 | is-release-branch: false 16 | hotfix: 17 | increment: Patch 18 | tag: beta 19 | ignore: 20 | sha: [ ] -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/README.md: -------------------------------------------------------------------------------- 1 | # AddressService 2 | 3 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/bitbucket-pipelines.yml: -------------------------------------------------------------------------------- 1 | image: mcr.microsoft.com/dotnet/sdk:6.0 2 | clone: 3 | lfs: true 4 | depth: full 5 | pipelines: 6 | default: 7 | - step: 8 | name: Build 9 | services: 10 | - docker 11 | script: 12 | - dotnet new tool-manifest 13 | - dotnet tool install Cake.Tool 14 | - dotnet cake -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | seq: 4 | container_name: addressservice_seq 5 | image: datalust/seq:latest 6 | ports: 7 | - 80:80 8 | - 5341:5341 9 | environment: 10 | ACCEPT_EULA: Y 11 | networks: 12 | - addressservice 13 | postgres: 14 | container_name: addressservice_postgre 15 | image: postgres 16 | env_file: 17 | - .env 18 | 19 | volumes: 20 | - postgres:/data/postgres 21 | ports: 22 | - "5432:5432" 23 | networks: 24 | - addressservice 25 | restart: unless-stopped 26 | networks: 27 | addressservice: 28 | driver: bridge 29 | volumes: 30 | postgres: -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Mapping.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using Domain; 3 | 4 | 5 | namespace Threenine.Activities.Addresses.Queries.Get; 6 | 7 | public class Mapping: Profile 8 | { 9 | public Mapping() 10 | { 11 | 12 | CreateMap() 13 | .ForMember(dest => dest.Postcode, opt => opt.MapFrom(src => src.Postcode)) 14 | .ForMember(dest => dest.AddressLine1, opt => opt.MapFrom(src => src.Street)) 15 | .ForMember(dest => dest.AddressLine2, opt => opt.MapFrom(src => src.Locality)) 16 | .ForMember(dest => dest.City, opt => opt.MapFrom(src => src.Town)) 17 | .ForMember(dest => dest.County, opt => opt.MapFrom(src => src.OptionalCounty)) 18 | .ForMember(dest => dest.Organisation, opt => opt.MapFrom(src => src.Organisation)) 19 | .ForMember(dest => dest.Property, opt => opt.MapFrom(src => src.Property)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Query.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MediatR; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Threenine.ApiResponse; 5 | 6 | namespace Threenine.Activities.Addresses.Queries.Get; 7 | 8 | public class Query : IRequest> 9 | { 10 | [FromQuery(Name = "postCode")] public string PostCode { get; set; } 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Response.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Threenine.Activities.Addresses.Queries.Get; 4 | 5 | public class Response 6 | { 7 | public Address[] Addresses { get; set; } 8 | } 9 | 10 | public class Address 11 | { 12 | public string AddressLine1 { get; set; } 13 | public string AddressLine2 { get; set; } 14 | public string Postcode { get; set; } 15 | public string City { get; set; } 16 | public string County { get; set; } 17 | public string Property { get; set; } 18 | public string Organisation { get; set; } 19 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Activities/Addresses/Queries/Get/Get.Validator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Common; 3 | using FluentValidation; 4 | 5 | namespace Threenine.Activities.Addresses.Queries.Get; 6 | 7 | public class Validator : AbstractValidator 8 | { 9 | public Validator() 10 | { 11 | RuleFor(x => x.PostCode).NotEmpty(); 12 | 13 | RuleFor(x => x.PostCode).Matches(RegularExpressions.PostCodeValidator) 14 | .WithMessage("Valid UK postcode required"); 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Activities/Addresses/Routes.cs: -------------------------------------------------------------------------------- 1 | namespace Api.Activities; 2 | internal static partial class Routes 3 | { 4 | internal const string Addresses = "Addresses"; 5 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Exceptions/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Api.Exceptions 4 | { 5 | public class ApiException : Exception 6 | { 7 | public ApiException(string title, string message) : base(message) => Title = title; 8 | public string Title { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Exceptions/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | 4 | namespace Api.Exceptions 5 | { 6 | [Serializable] 7 | public class NotFoundException : ApiException 8 | { 9 | public NotFoundException(string title, string message) : base(title, message) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:38323", 8 | "sslPort": 44379 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Api": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AllowedHosts": "*", 3 | "AfdSettings": { 4 | "Endpoint": "https://pce.afd.co.uk/afddata.pce", 5 | "Data": "Address", 6 | "CountryISO": "GBR", 7 | "Serial": "", 8 | "Password": "", 9 | "Task": "fastfind", 10 | "Format":"json", 11 | "Fields": "simple" 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Common/Constants.cs: -------------------------------------------------------------------------------- 1 | namespace Common; 2 | 3 | public static class Constants 4 | { 5 | public const string AfdSettings = "AfdSettings"; 6 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/AddressServiceContext.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using Microsoft.EntityFrameworkCore; 3 | using Threenine.Configurations.PostgreSql; 4 | using Threenine; 5 | 6 | namespace Database.AddressServices; 7 | 8 | public class AddressServiceContext : BaseContext 9 | { 10 | public AddressServiceContext(DbContextOptions options) 11 | : base(options) 12 | { 13 | } 14 | 15 | protected override void OnModelCreating(ModelBuilder modelBuilder) 16 | { 17 | modelBuilder.HasDefaultSchema(DefaultSchema.Name); 18 | modelBuilder.HasPostgresExtension(PostgreExtensions.UUIDGenerator); 19 | modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); 20 | } 21 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/AddressServiceContextFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace Database.AddressServices; 6 | 7 | internal class AddressServiceContextFactory : IDesignTimeDbContextFactory 8 | { 9 | public AddressServiceContext CreateDbContext(string[] args) 10 | { 11 | DbContextOptionsBuilder dbContextOptionsBuilder = 12 | new(); 13 | 14 | dbContextOptionsBuilder.UseNpgsql(ConnectionStringNames.LocalBuild); 15 | return new AddressServiceContext(dbContextOptionsBuilder.Options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/Configurations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-http-client-factory/AddressService/src/Database/Database/Configurations/.gitkeep -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/InternalConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Database.AddressServices; 2 | 3 | internal static class ConnectionStringNames 4 | { 5 | /// 6 | /// A default of localBuild is provided this can be any abitraty value as this will ensure 7 | /// the migrations are created using an ephemeral in memory database. If you want to use an actual database 8 | /// to create migrations then this value can be changed to the name of a Connection string. 9 | /// 10 | internal const string LocalBuild = "localBuild"; 11 | } 12 | 13 | internal static class DefaultSchema 14 | { 15 | internal const string Name = "AddressService"; 16 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/README.md: -------------------------------------------------------------------------------- 1 | ## Recreate a Migration 2 | 3 | 4 | >Remove the existing files from the Migrations folder 5 | 6 | >execute the following command - cd into the database project folder 7 | dotnet ef migrations add initial -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/Validators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-http-client-factory/AddressService/src/Database/Database/Validators/.gitkeep -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Database/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "localBuild": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Solution;Integrated Security=SSPI" 4 | } 5 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Models/Data/AddressService.cs: -------------------------------------------------------------------------------- 1 | public class AddressService 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Database/Models/Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Domain/Addresses.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Source 4 | { 5 | public string Result { get; set; } 6 | public string ErrorText { get; set; } 7 | public Item[] Item { get; set; } 8 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Domain/AfdSettings.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class AfdSettings 4 | { 5 | public string Endpoint { get; set; } 6 | public string Data { get; set; } 7 | public string CountryISO { get; set; } 8 | public string Serial { get; set; } 9 | public string Password { get; set; } 10 | public string Task { get; set; } 11 | public string Format { get; set; } 12 | public string Fields { get; set; } 13 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Domain/Domain.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Domain/Item.cs: -------------------------------------------------------------------------------- 1 | namespace Domain; 2 | 3 | public class Item 4 | { 5 | public string value { get; set; } 6 | public string Postcode { get; set; } 7 | public string Organisation { get; set; } 8 | public string Property { get; set; } 9 | public string Street { get; set; } 10 | public string Locality { get; set; } 11 | public string Town { get; set; } 12 | public string OptionalCounty { get; set; } 13 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Services/IAdressProvider.cs: -------------------------------------------------------------------------------- 1 | using Domain; 2 | 3 | namespace Services; 4 | 5 | public interface IAddressDataProvider 6 | { 7 | Task GetByPostCode(string postcode, CancellationToken cancellationToken); 8 | 9 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/src/Services/Services.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ..\..\..\..\..\..\..\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_200_Ok.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 200", () => { 3 | client.assert(response.status === 200, "HTTP Response status code is not 200"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_201.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with OK 201", () => { 3 | client.assert(response.status === 201, "HTTP Response status code is not 201"); 4 | }); 5 | 6 | client.test("Response content-type is json", () => { 7 | var contentType = response.contentType.mimeType; 8 | client.assert(contentType === "application/json", "Expected content-type 'application/json' but received '" + contentType + "'"); 9 | }); 10 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_400.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 400", () => { 3 | client.assert(response.status === 400, "HTTP Response status code is not 400, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_404.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Successful request with Not Found 404", () => { 3 | client.assert(response.status === 404, "HTTP Response status code is not 404"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_500.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Bad Request error 500", () => { 3 | client.assert(response.status === 500, "HTTP Response status code is not 500, received '" + response.status + "'"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Asserts/Should_be_conflict.js: -------------------------------------------------------------------------------- 1 | // Script which can be run after HTTP requests 2 | client.test("Unsuccessful request with Conflict Exception 409", () => { 3 | client.assert(response.status === 409, "HTTP Response status code is not 409"); 4 | }); 5 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Tests/.httpyac.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "https": { 4 | "rejectUnauthorized": false 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Tests/Solutions/solution-get-tests.http: -------------------------------------------------------------------------------- 1 | ### TODO: Add your integration tests here 2 | 3 | 4 | ### Get Tests 5 | GET {{host}}/{{solution_resource_name}}/ 6 | accept: application/json 7 | Content-Type: application/json 8 | 9 | > ../../Asserts/Should_be_200_Ok.js 10 | 11 | ### 12 | 13 | 14 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Integration/Tests/http-client.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "host": "http://localhost:5000", 4 | "soltuion_resource_name": "solution" 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /how-to-use-http-client-factory/AddressService/tests/Unit/Activities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/how-to-use-http-client-factory/AddressService/tests/Unit/Activities/.gitkeep -------------------------------------------------------------------------------- /images/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/images/header.png -------------------------------------------------------------------------------- /old-tutorials.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/garywoodfine/Blog-Tutorials/ab56d4a8eabb2a20b3dc736b7064e6d534f38743/old-tutorials.zip --------------------------------------------------------------------------------