Skip to content

Instantly share code, notes, and snippets.

View rdingwall's full-sized avatar

Richard Dingwall rdingwall

View GitHub Profile
@rdingwall
rdingwall / FilterIPAttribute.cs
Created March 13, 2012 13:45
FilterIPAttribute for ASP.NET Web API (IIS only, port of MVC version from http://stackoverflow.com/a/4605086/91551)
using System;
using System.Configuration;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace Miscellaneous.Attributes.Controller
{
/// <summary>
/// Filter by IP address (ASP.NET Web API version)
@rdingwall
rdingwall / Global.asax.cs
Created March 10, 2012 19:39
camelCase + indented JSON formatter for ASP.NET Web API
...
var config = GlobalConfiguration.Configuration;
// Replace the default JsonFormatter with our custom one
var index = config.Formatters.IndexOf(config.Formatters.JsonFormatter);
config.Formatters[index] = new JsonCamelCaseFormatter();
...
@rdingwall
rdingwall / ExampleController.cs
Created March 9, 2012 12:27
RavenDB ASP.NET Web API session management
public class BooksApiController : FooApiController
{
public IEnumerable<Book> Get()
{
return DocumentSession
.Query<Book>()
.OrderByAscending(p => p.Author)
.Take(100);
}
}
@rdingwall
rdingwall / RavenUniqueInserter.cs
Created March 1, 2012 16:22
Raven DB unique constraint inserter
public interface IRavenUniqueInserter
{
void StoreUnique<T, TUnique>(
IDocumentSession session, T entity,
Expression<Func<T, TUnique>> keyProperty);
}
public class RavenUniqueInserter : IRavenUniqueInserter
{
public void StoreUnique<T, TUnique>(IDocumentSession session, T entity,
@rdingwall
rdingwall / DropAllRavenDatabases.bat
Created February 29, 2012 13:15
Fast Raven DB sandbox database helpers
@echo off
rem Warning: this batch file deletes ALL Raven DB data and databases, leaving you with a totally empty (but ready to use) Raven DB instance.
net stop RavenDB
rd /S /Q C:\RavenDB\Server\Data
rd /S /Q C:\RavenDB\Server\Tenants
net start RavenDB
@rdingwall
rdingwall / DynamicJsonDeserializer.cs
Created February 22, 2012 12:22
RestSharp deserialize JSON to dynamic
// ReSharper disable CheckNamespace
namespace RestSharp.Deserializers
// ReSharper restore CheckNamespace
{
public class DynamicJsonDeserializer : IDeserializer
{
public string RootElement { get; set; }
public string Namespace { get; set; }
public string DateFormat { get; set; }
@rdingwall
rdingwall / CompositePresentationEventExtensions.cs
Created February 9, 2012 17:04
AsObservable() extension method for Prism's event aggregator
using System;
using Microsoft.Practices.Prism.Events;
// ReSharper disable CheckNamespace
namespace Microsoft.Practices.Prism.Events
// ReSharper restore CheckNamespace
{
public static class CompositePresentationEventExtensions
{
public static IObservable<TEventArgs> AsObservable<TEventArgs>(this CompositePresentationEvent<TEventArgs> @event)
@rdingwall
rdingwall / FindCctors.cs
Created December 29, 2011 13:24
Find types with static ctors (.cctor)
[TestFixture]
public class FindStaticCtors
{
[Test]
public void Foo()
{
var typesWithCctors = new[]
{
Assembly.GetAssembly(typeof(xyz)),
@rdingwall
rdingwall / gist:1514426
Created December 23, 2011 15:05
Devart Oracle home debugging
using System;
using System.Reflection;
using Devart.Data.Oracle;
void PrintDevartOracleHome()
{
// SUPER HACKY
// Get internal property OracleHomeCollection.SingletonInstance
var homes = (OracleHomeCollection)typeof(OracleHomeCollection)
.GetProperties(BindingFlags.Static | BindingFlags.NonPublic)
@rdingwall
rdingwall / FileHelpersTypeExtensions.cs
Created November 24, 2011 14:07
Set FileHelper's FileHelperEngine.HeaderText via reflection
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
// see http://stackoverflow.com/questions/3975741/column-headers-in-csv-using-filehelpers-library/8258420#8258420
// ReSharper disable CheckNamespace
namespace FileHelpers
// ReSharper restore CheckNamespace