Skip to content

Instantly share code, notes, and snippets.

View JamesRandall's full-sized avatar

James Randall JamesRandall

View GitHub Profile
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AzureFromTheTrenches.Commanding;
using AzureFromTheTrenches.Commanding.Abstractions;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@JamesRandall
JamesRandall / FunctionAppConfiguration.cs
Created August 6, 2018 16:45
Environment variable example
public class FunctionAppConfiguration : IFunctionAppConfiguration
{
public void Build(IFunctionHostBuilder builder)
{
builder
.Setup((serviceCollection, commandRegistry) =>
{
serviceCollection
.AddCosmosRepository(Environment.GetEnvironmentVariable("cosmosConnectionString", EnvironmentVariableTarget.Process));
// rest of registration
@JamesRandall
JamesRandall / BearerTokenValidator.cs
Created June 16, 2018 07:49
Sample ITokenValidator implementation for FunctionMonkey
public class BearerTokenValidator : ITokenValidator
{
private static readonly IConfigurationManager<OpenIdConnectConfiguration> ConfigurationManager;
static BearerTokenValidator()
{
string domain = Environment.GetEnvironmentVariable("domain");
string wellKnownEndpoint = $"https://{domain}/.well-known/openid-configuration";
var documentRetriever = new HttpDocumentRetriever { RequireHttps = wellKnownEndpoint.StartsWith("https://") };
@JamesRandall
JamesRandall / getUmbracoPropertyContent.sql
Created March 18, 2018 11:23
Gets the values for a property from an Umbraco database
select cpd.* from cmsPropertyData cpd
inner join cmsPropertyType cpt
on cpt.id = cpd.propertytypeid
and cpt.Alias='%propname%'
@JamesRandall
JamesRandall / gitChangeStatsByDay.ps1
Last active March 13, 2018 19:04
Script that runs through the git commit log and gets the number of additions and deletions made by date. Run the script in the folder of a git repository. See sampleoutput.csv for, errr, sample output
# Not the best written script in the world but it does a job.
Param(
[string]$path="stats.csv"
)
$commitHashes = git log --pretty=format:"%h"
$commitDates = git log --pretty=format:"%ad" --date=short
$deletions = @()
$additions = @()
$changesOverTime = @()
@JamesRandall
JamesRandall / RedBlackTree.cs
Last active December 3, 2022 19:45
Red-Black Tree Implementation in C#
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace OpinionatedCode.Collections
{
public sealed class RedBlackTree<TKey, TValue>
{
private readonly RedBlackTreeNode<TKey, TValue> _leaf = RedBlackTreeNode<TKey, TValue>.CreateLeaf();
@JamesRandall
JamesRandall / gist:87c31114ebde542f82cbb9c2fe2ae7c6
Created February 14, 2018 13:36
Reworked code as part of fix
/*
Nuget packages included:
- AzureFromTheTrenches.Commanding 6.1.0
- AzureFromTheTrenches.Commanding.MicrosoftDependencyInjection 6.1.0
- Microsoft.Extensions.DependencyInjection 2.0.0
*/
using System;
using System.Threading.Tasks;
using AzureFromTheTrenches.Commanding;
@JamesRandall
JamesRandall / MapAppServiceDomain.cs
Last active March 25, 2017 08:12
Demonstrates how to map a domain name to an Azure website programmatically
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Newtonsoft.Json.Linq;
static class DomainMapper
@JamesRandall
JamesRandall / routeProfileRenderer.js
Last active February 20, 2017 14:39
3d GPS Route Profile Rendering
// When given a set of GPS points and a container DOM element the code below will render a 3d profile of your GPS route.
// It requires three.js and that libraries associated Orbit Controls to run.
// The gpsPoints parameter should be an array with the following structure:
// [{latitude:0.323234,longitude:56.23244,altitude:1.8},...]
// To use in most browers compile with Babel as it uses a smattering of ES2015
export default function attachRenderer(container, gpsPoints) {
const THREE = window.THREE
// haversine formula calcuates the distance in km between two points of lon,lat
function haversineDistanceKm(lon1,lat1,lon2,lat2) {
function toRad(deg) {
@JamesRandall
JamesRandall / RedirectRootToSwagger.cs
Created August 13, 2016 09:29
Redirect the root path of an Owin hosted application to the swagger end point
using System.Net;
using Owin;
namespace MyApplication.Api.Extensions
{
// ReSharper disable once InconsistentNaming
public static class IAppBuilderExtensions
{
public static IAppBuilder RedirectRootToSwagger(this IAppBuilder app)
{