Skip to content

Instantly share code, notes, and snippets.

@ankitvijay
ankitvijay / 1_GetOrderQueryHandler.cs
Last active April 20, 2021 21:15
Throw Exception from relevant
public class GetOrderQueryHandler
{
.
.
.
public async Task<OrderDto> Handle(GetOrderQuery request, CancellationToken cancellationToken)
{
var order = await _repository.Get(request.OrderId);
@ankitvijay
ankitvijay / 1_ResourceNotFoundException.cs
Created April 20, 2021 20:35
Consistent Error Logging - Exception for different Error Status codes
using System;
using System.Runtime.Serialization;
[Serializable]
// Used for HttpStatusCode 404 (NotFound)
public class ResourceNotFoundException : Exception
{
public ResourceNotFoundException(string message) : base(message)
{
}
@ankitvijay
ankitvijay / 1_ErrorResponse.cs
Last active April 20, 2021 23:43
Error Response Object - Consistent Error Handling
public class ErrorResponse
{
public HttpStatusCode StatusCode { get; set; }
public string Title { get; set; }
public string Exception { get; set; }
public List<ErrorEntry> Entries { get; set; }
}
@ankitvijay
ankitvijay / ApplicationExceptionMiddleware.cs
Created April 18, 2021 20:28
Consistent Error Logging - Application Exception Middleware
using System;
using System.Net.Mime;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
public class ApplicationExceptionMiddleware
{
private readonly RequestDelegate _next;
@ankitvijay
ankitvijay / OrderController.cs
Last active April 20, 2021 23:42
Example of inconsistent error code
[HttpPatch]
public async Task<IActionResult> Update([FromBody] OrderDto order)
{
try
{
if (!ModelState.IsValid)
{
// Returns response of type `ModelState` on "Bad Request"
return BadRequest(ModelState);
}
@ankitvijay
ankitvijay / LoadCertificate
Last active April 14, 2021 10:00
Azure App Service: Load certifcate
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
public static class CertificateExtensions
{
// Private certificatePath: $"/var/ssl/private/{thumbprint}.p12"
// Public certificatePath: $"/var/ssl/certs/{thumbprint}.der"
@ankitvijay
ankitvijay / DistributedLockTests.cs
Last active February 28, 2021 08:09
Distributed Lock TestsDistributed Lock Tests
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Xunit;
using Xunit.Abstractions;
namespace PostgreSQLDistributedLock.Tests
{
public class DistributedLockTests
@ankitvijay
ankitvijay / DistributedLock.cs
Last active February 28, 2021 08:08
DistributedLockTaskDistributedLockTask
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Npgsql;
namespace PostgreSQLDistributedLock
{
public sealed class DistributedLock : IDisposable
{
private readonly ILogger<DistributedLock> _logger;
@ankitvijay
ankitvijay / Program.cs
Created February 21, 2021 20:05
Register scoped Service Register Scoped Service
services.AddHostedService<SchedulerService>();
services.AddScoped<IScopedSchedulerService, ScopedSchedulerService>();
@ankitvijay
ankitvijay / SchedulerService.cs
Created February 21, 2021 20:00
Scheduler Background Service Scope Injection
using System;
using System.Threading;
using System.Threading.Tasks;
using Cronos;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace SchedulerJobSample.Worker
{