Skip to content

Instantly share code, notes, and snippets.

View finesse-fingers's full-sized avatar

Bobby Koteski finesse-fingers

  • McKinsey & Company
  • Melbourne
View GitHub Profile
@finesse-fingers
finesse-fingers / ProtoLink.csproj
Created June 13, 2020 05:16
Link a proto from a shared location in a csproj
@finesse-fingers
finesse-fingers / FunctionsStartup.cs
Created May 12, 2020 11:30
Using ConfigurationBuilder to add KeyVault as a provider
public static class ServiceExtensions
{
/// <summary>
/// Creates a custom configuration for easier development of Azure Functions.
/// When environment is not Development, it adds support for keyvault
/// </summary>
/// <param name="builder"></param>
/// <returns></returns>
public static IConfiguration GetCustomConfiguration(this IFunctionsHostBuilder builder)
{
@finesse-fingers
finesse-fingers / CheckIfSecretExists.ps1
Created May 12, 2020 11:27
Pscore snippet checking to see if a secret exists in azure keyvault
# check to see if secret exists in keyvault, otherwise throw error
$SecretName = "HttpClientConfiguration--ApiKey"
$doesExist=$(az keyvault secret show `
--vault-name $KeyVaultName `
--name $SecretName `
--query id -o tsv)
if ($doesExist) {
echo "Secret '$SecretName' found in vault '$KeyVaultName' OK"
} else {
echo "Expecting secret '$SecretName' to be in vault '$KeyVaultName'"
@finesse-fingers
finesse-fingers / ServiceBusOptions.cs
Created May 12, 2020 10:16
Example showing how to configure azure function service bus in Startup
builder.Services.Configure(delegate(ServiceBusOptions options)
{
options.MessageHandlerOptions.AutoComplete = false;
});
# Set other app settings
$values = [System.IO.File]::ReadAllText($appSettings)
$appSettingsList = $values.Split([System.Environment]::NewLine)
echo "setting app settings: $appSettingsList"
az functionapp config appsettings set `
--name $functionAppName `
--resource-group $resourceGroup `
--settings $appSettingsList
@finesse-fingers
finesse-fingers / bash-argument-parsing.sh
Created May 4, 2020 09:10
Demonstrates how to parse arguments in bash
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# -e: immediately exit if any command has a non-zero exit status
# -o: prevents errors in a pipeline from being masked
# IFS new value is less likely to cause confusing bugs when looping arrays or arguments (e.g. $@)
function usage()
{

Prerequisite

Install https://github.com/Microsoft/artifacts-credprovider

Project setup

Add a nuget.config file to your project, in the same folder as your .csproj or .sln file. E.g.:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
 
@finesse-fingers
finesse-fingers / ConfigureHttpClient.cs
Created April 26, 2020 05:04
Typed http client configuration and registration
public static class ServiceExtensions
{
public static IServiceCollection AddTypedHttpClient(this IServiceCollection service, IConfiguration configuration)
{
service.Configure<HttpClientConfiguration>(
configuration.GetSection(nameof(HttpClientConfiguration)));
var provider = service.BuildServiceProvider();
var httpConfiguration = provider.GetService<IOptions<HttpClientConfiguration>>().Value;
@finesse-fingers
finesse-fingers / KeyVaultReload.cs
Created April 26, 2020 04:57
Azure keyvaul client with reload interval
configurationBuilder.AddAzureKeyVault(new AzureKeyVaultConfigurationOptions
{
Vault = configuration["KeyVaultUrl"],
ReloadInterval = TimeSpan.FromMinutes(10),
Client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
new AzureServiceTokenProvider().KeyVaultTokenCallback))
});
@finesse-fingers
finesse-fingers / PrefixKeyVaultSecretManager.cs
Last active April 26, 2020 04:54
Azure keyvault prefix manager and usage
using Microsoft.Azure.KeyVault.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureKeyVault;
namespace Demo.Azure.KeyVault
{
public class PrefixKeyVaultSecretManager : IKeyVaultSecretManager
{
private readonly string _prefix;