Skip to content

Instantly share code, notes, and snippets.

View ReubenBond's full-sized avatar
🌞
building

Reuben Bond ReubenBond

🌞
building
View GitHub Profile
@ReubenBond
ReubenBond / docdb_signature.cs
Last active August 29, 2015 14:05
Azure DocumentDB: Compute Signature
public static string GetSignature(string masterKey, string resourceId, string resourceType, string xDate = null, string date = null)
{
if (string.IsNullOrEmpty(xDate) && string.IsNullOrEmpty(date))
{
throw new ArgumentException("Either xDate or date must be provided.");
}
const string AuthorizationFormat = "type={0}&ver={1}&sig={2}";
const string MasterToken = "master";
const string TokenVersion = "1.0";
public async Task SendSms(string phoneNumber, string body)
{
// Sanitize the phone number.
phoneNumber = Regex.Replace(phoneNumber, "[^0-9]", string.Empty);
// Build the request.
var builder = new UriBuilder("https://rest.nexmo.com/sms/json");
var parameters = new Dictionary<string, string>
{
{ "api_key", this.apiKey },
@ReubenBond
ReubenBond / AzureJsonStore.cs
Created September 8, 2014 00:50
AzureJsonStore.cs
// --------------------------------------------------------------------------------------------------------------------
// <summary>
// The Azure JSON table storage provider.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace Grains.Utilities
{
using System.Configuration;
using System.Threading.Tasks;
@ReubenBond
ReubenBond / WorkerRole.cs
Created February 26, 2015 20:52
Orleans: modifying internal provider config
namespace Orleans.Azure.Silos
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Reflection;
using Microsoft.WindowsAzure;
@ReubenBond
ReubenBond / ChatRoomGrain.cs
Created May 14, 2015 01:37
ChatRoomGrain snippet
"Don't expect this to compile - it's just a snippet"
/// <summary>
/// The chat room grain.
/// </summary>
[StorageProvider(ProviderName = "chats")]
[Reentrant]
@ReubenBond
ReubenBond / Program.cs
Created July 6, 2015 12:29
Orleans with client/server/interfaces/implementations in a single file. https://github.com/dotnet/orleans/pull/528
namespace RosleansSilo
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
using Orleans;
@ReubenBond
ReubenBond / SerializationCodeGenerator.cs
Created October 16, 2015 21:06
Orleans IL-based Serializer generator (WIP)
namespace Orleans.CodeGeneration
{
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.Serialization;
@ReubenBond
ReubenBond / Program.cs
Created October 16, 2015 22:02
TestAzureSilo
namespace TestAzureSilo
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Net;
using Orleans;
using Orleans.Runtime;
@ReubenBond
ReubenBond / ObjectTask.cs
Created November 5, 2015 00:06
ObjectTask: movified version of ValueTask for use in generated dispatchers
public struct ObjectTask : IEquatable<ObjectTask>
{
private static object GetResult<TResult>(Task typedTask)
{
return ((Task<TResult>)typedTask).GetAwaiter().GetResult();
}
private static object GetResult(Task untypedTask)
{
untypedTask?.GetAwaiter().GetResult();
@ReubenBond
ReubenBond / OrleansJsonSerialization.cs
Created November 6, 2015 06:34
Orleans JSON (JObject, etc) Serialization
/// <summary>
/// Provides support for serializing JSON values.
/// </summary>
[RegisterSerializer]
public class OrleansJsonSerialization
{
/// <summary>
/// Initializes static members of the <see cref="OrleansJsonSerialization"/> class.
/// </summary>
static OrleansJsonSerialization()