Skip to content

Instantly share code, notes, and snippets.

View kasunkv's full-sized avatar
💭
I may be slow to respond.

Kasun Kodagoda kasunkv

💭
I may be slow to respond.
View GitHub Profile
{
"AppSettings": {
"KeyVaultName": "gabc-vault",
"HomePage": {
"Title": "Hello From Local App Settings",
"Description": "This description is taken from the appSettings.json."
},
"ExternalService": {
"ClientId": "client-localhost",
"ApiKey": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
@kasunkv
kasunkv / TimeFunction.cs
Created June 9, 2019 11:44
Construction Injecting the Dependencies in to Azure Function.
namespace Function.DependencyInjection.Timer
{
public class TimeFunction
{
private readonly IHelloService _helloService;
public TimeFunction(IHelloService helloService)
{
_helloService = helloService;
}
@kasunkv
kasunkv / Startup.cs
Created June 9, 2019 11:39
Azure Functions V2 Startup Class
[assembly: FunctionsStartup(typeof(Startup))]
namespace Function.DependencyInjection.Timer
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddScoped<IHelloService, HelloService>();
}
}
@kasunkv
kasunkv / HomeContraoller.cs
Created June 8, 2019 09:13
AzureServiceTokenProvicer callback
// Creating the Key Vault client
var tokenProvider = new AzureServiceTokenProvider();
var vaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(tokenProvider.KeyVaultTokenCallback));
@kasunkv
kasunkv / HomeContraoller.cs
Last active June 8, 2019 09:06
Using AzureServiceTokenProvider to fetch the Access Token for Key Vault
public async Task<IActionResult> Index()
{
var vaultName = _configuration["AppSettings:KeyVaultName"];
var secretName = _configuration["AppSettings:SecretName"];
var vm = new HomeViewModel();
try
{
// Creating the Key Vault client
@kasunkv
kasunkv / OrderDiscountProcessor.cs
Created May 12, 2019 14:14
Implementation of IDiscountProcessor.cs
public class OrderDiscountProcessor : IDiscountProcessor
{
private readonly Discount _discount;
public OrderDiscountProcessor(Discount discount)
{
_discount = discount;
}
public double ProcessDiscount(OrderViewModel order)
@kasunkv
kasunkv / services.cs
Created May 12, 2019 14:13
ASP.Net Core Dependency Injection - Implementation Factory
services.AddScoped<IDiscountProcessor, OrderDiscountProcessor>();
services.AddScoped<Discount>(sp =>
{
return new DiscountBuilder()
.WithMinimumBillAmount(1000)
.WithMinimumItemCount(3)
.WithPercentage(10)
.Build();
});
@kasunkv
kasunkv / OrderDiscountProcessor.cs
Created May 7, 2019 15:51
ProcessDiscount() method
public (double, List<string>) ProcessDiscount(OrderViewModel order)
{
var discountDiscroptoons = new List<string>();
var totalDiscount = 0.0;
foreach (var discount in _discounts)
{
var addedDiscount = discount.CalculateDiscount(order);
if (addedDiscount > 0)
{
public class OrderDiscountProcessor : IDiscountProcessor
{
private readonly IEnumerable<IDiscount> _discounts;
public OrderDiscountProcessor(IEnumerable<IDiscount> discounts)
{
_discounts = discounts;
}
// ...
}
@kasunkv
kasunkv / services.cs
Created May 7, 2019 15:50
Register multiple implementations - Method 02
services.AddScoped<IDiscountProcessor, OrderDiscountProcessor>();
services.TryAddEnumerable(new[]
{
ServiceDescriptor.Scoped<IDiscount, SeasonalDiscount>(),
ServiceDescriptor.Scoped<IDiscount, LargeOrderDiscount>(),
ServiceDescriptor.Scoped<IDiscount, ThreeOrModeDiscount>()
});