├── 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
--------------------------------------------------------------------------------