Skip to content

Instantly share code, notes, and snippets.

View kerslake's full-sized avatar

Richard Kerslake kerslake

View GitHub Profile
public abstract class TwilioApiController : ApiController
{
protected HttpResponseMessage TwiMLResponse(TwilioResponse response)
{
return this.Request.CreateResponse(HttpStatusCode.OK, response.Element, new XmlMediaTypeFormatter());
}
}
public class AuthenticateController : TwilioApiController
{
public HttpResponseMessage Post(VoiceRequest request)
{
var pin = request.Digits;
var authenticated = AuthenticationService.Authenticate(pin);
if (!authenticated)
{
public class AuthenticationService
{
private static readonly List<User> Users = new List<User>
{
new User { Id = 1, Pin = "123", Name = "Pascal" },
new User { Id = 2, Pin = "234", Name = "Mike" },
new User { Id = 3, Pin = "345", Name = "Howard" },
};
public static bool Authenticate(string pin)
public class UserController : TwilioApiController
{
public HttpResponseMessage Post(VoiceRequest request, string pin)
{
var user = AuthenticationService.GetUser(pin);
var response = new TwilioResponse();
response.Say(string.Format("Hello {0}", user.Name));
response.Pause(2);
response.Hangup();
public class InvalidPinException : CustomException
{
/* code omitted */
public override ErrorAction ErrorAction
{
get
{
return ErrorAction.Ignore;
}
public static class FilterConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new TwilioRequestErrorFilter());
}
}
public class TwilioRequestErrorFilter : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
/* code omitted */
var customException = context.Exception as CustomException;
var errorAction = customException == null ? ErrorAction.Escalate : customException.ErrorAction;
var parameters = context.ActionContext.ActionArguments.ToRequestParameters();
public class NewRelicLogger
{
public static void LogError(Exception ex, ErrorAction actionTaken, object parameters)
{
/* code omitted */
var errorDetails = Create(ex, ex.Message, ex.StackTrace, actionTaken, parameters);
LogToNewRelic(errorDetails);
void Main()
{
IObservable<PerformanceSample> performanceCounterObservable = PerfCounterObservable.FromRealTime(TimeSpan.FromSeconds(1), new[]{
@"\Processor(_Total)\% Processor Time",
@"\Memory(_Total)\% Committed Bytes In Use",
@"\Memory(_Total)\Available MBytes"})
.Take(6);
performanceCounterObservable.Subscribe(new PerfSampleObserver());
}
workflow Start-VM
{
Param (
[parameter(Mandatory=$true)]
[String]
$VMName,
[parameter(Mandatory=$true)]
[String]
$ServiceName