Skip to content

Instantly share code, notes, and snippets.

@bronumski
bronumski / OctopusSlackIntegration.ps1
Last active May 20, 2016 15:19
Playing with slack integration from Octopus Deploy
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
@bronumski
bronumski / ToDynamic.cs
Created May 23, 2016 11:26
Extension to convert an object to an ExpandoObject
public static class DynamicExtensions
{
public static dynamic ToDynamic(this object value)
{
IDictionary<string, object> expando = new ExpandoObject();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType()))
expando.Add(property.Name, property.GetValue(value));
return expando as ExpandoObject;
@bronumski
bronumski / HttpClientExtensions.cs
Last active March 1, 2018 18:25
Change request header for individual requests
public static Task<HttpResponseMessage> GetAsync
(this HttpClient httpClient, string uri, Action<HttpRequestMessage> preAction)
{
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);
preAction(httpRequestMessage);
return httpClient.SendAsync(httpRequestMessage);
}
@bronumski
bronumski / CleanFileName.cs
Created March 15, 2018 16:16
Remove invalid chars from a file name using linq
public static string CleanFileName(string fileName)
{
return Path.GetInvalidFileNameChars().Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty));
}
@bronumski
bronumski / Program.cs
Last active March 15, 2018 20:51
C# Functional Try Catch Finally
public static int Main(string[] args) =>
Try
.Action(() => 0)
.WithCatch<Exception>(ex => 1})
.Finally(CleanUpMethod);
@bronumski
bronumski / stock.fsx
Created May 20, 2020 04:37
Technical test to get the aggregated stock results for a given symbol, originally done in C# but I tried it out in F#
#r @"./packages/fsharp-data/netstandard2.0/Fsharp.Data.dll"
#r @"./packages/newtonsoft.json/netstandard2.0/Newtonsoft.Json.dll"
open System
open FSharp.Data
open Newtonsoft.Json.Linq
let timeSeriesUrl = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=%s&outputsize=full&apikey=A3U8E3F7N3A85K86"
type TimeSeries = FSharp.Data.JsonProvider<"""{
"2. high": "123.4567",
@bronumski
bronumski / Test.cs
Last active August 5, 2020 00:07
TestServer
private TestServer CreateTestServer() =>
new TestServer(new WebHostBuilder()
.UseStartup<FakeStartup>());
class FakeStartup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Run(async ctx =>
{
@bronumski
bronumski / dotcover.sh
Created August 17, 2020 17:02
Run dotcover command line against .net core test
# Mac
../dotcover/dotCover.sh cover --output=./bin/<project coverage>.html --reportType=HTML --TargetExecutable=/usr/local/share/dotnet/dotnet -- test ./<project>/<project>.UnitTests/
@bronumski
bronumski / SpecsForController.cs
Created August 21, 2020 03:28
ASP.NET MVC 5 Unit Testing
abstract class SpecsForController<TSut, TResult> where TSut : ControllerBase where TResult : ActionResult
{
private readonly NSubstituteMockingKernel kernel = new NSubstituteMockingKernel();
private TSut Subject { get; set; }
protected TResult Result { get; private set; }
protected HttpContextBase HttpContext => Subject.ControllerContext.HttpContext;
protected virtual void Arrange(ControllerContext context) { }
protected abstract Expression<Action<TSut>> Act { get; }
protected TService ResolveDependency<TService>() => kernel.Get<TService>();
protected void RegisterDependency<TDependency>(TDependency dependency)
@bronumski
bronumski / BitbucketStaleBranchChecker.fs
Created October 28, 2020 23:34
Trawls bitbucket repositories looking for stale branches and pull requests.
open System
open System.Text
open FSharp.Data
open FSharp.Json
let (username, password) = ("username", "password")
let repositoryRootUrl = "https://api.bitbucket.org/2.0/repositories/team_workspace"
let repositories = [ "RepoA"; "RepoB" ]
let lookBack = DateTime.Now.AddDays(-1.0)
let maxOutdatedToTake = 10