Skip to content

Instantly share code, notes, and snippets.

View ajtowf's full-sized avatar

Ajden Towfeek ajtowf

View GitHub Profile
@ajtowf
ajtowf / Global.asax
Created January 7, 2014 12:55
WebApi2 config with OAuth setup
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
@ajtowf
ajtowf / gist:5501725
Created May 2, 2013 11:52
WebApi FromBody/ParseQuery
[HttpGet]
public HttpResponseMessage Foo([FromBody]MyModel bar)
{
var queryParams = HttpUtility.ParseQueryString(Request.RequestUri.Query);
string q = queryParams["q"];
...
}
@ajtowf
ajtowf / Global.asax
Created April 30, 2013 16:03
WebApi Global.asax
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
...
GlobalConfiguration.Configuration.MessageHandlers.Add(new OptionsHandler());
GlobalConfiguration.Configuration.MessageHandlers.Add(new MethodOverrideHandler());
GlobalConfiguration.Configuration.Formatters.Insert(0, new TypedXmlMediaTypeFormatter ...);
GlobalConfiguration.Configuration.Formatters.Insert(0, new TypedJsonMediaTypeFormatter ...);
...
@ajtowf
ajtowf / TypedXmlMediaTypeFormatter
Created April 30, 2013 16:00
WebApi TypedXmlMediaTypeFormatter
public class TypedXmlMediaTypeFormatter : XmlMediaTypeFormatter
{
private readonly int minorApiVersion;
public TypedXmlMediaTypeFormatter(MediaTypeHeaderValue mediaType, int minorApiVersion)
{
this.minorApiVersion = minorApiVersion;
SupportedMediaTypes.Clear();
SupportedMediaTypes.Add(mediaType);
}
@ajtowf
ajtowf / TypedJsonMediaTypeFormatter
Last active December 16, 2015 20:00
WebApi Wrapped JavaScriptSerializer Formatter
public class TypedJsonMediaTypeFormatter : MediaTypeFormatter
{
private static readonly JavaScriptSerializer Serializer = new JavaScriptSerializer();
public TypedJsonMediaTypeFormatter(MediaTypeHeaderValue mediaType)
{
SupportedMediaTypes.Clear();
SupportedMediaTypes.Add(mediaType);
}
@ajtowf
ajtowf / gist:5489597
Created April 30, 2013 15:48
WebApi PostingFiles
[ActionName("Index"), HttpPost]
public async Task<HttpResponseMessage> CreateAttachment(...)
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string attachmentsDirectoryPath = HttpContext.Current.Server.MapPath("~/SomeDir/");
if (!Directory.Exists(attachmentsDirectoryPath))
@ajtowf
ajtowf / VersioningFilter
Created April 30, 2013 15:42
WebApi VersioningFilter
public class VersioningFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var acceptHeaderContents = ...;
if (string.IsNullOrWhiteSpace(acceptHeaderContents))
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "No accept header provided");
}
else if (!IsCompatibleRequestVersion(acceptHeaderContents))
@ajtowf
ajtowf / MethodOverrideHandler
Created April 30, 2013 15:41
Webapi MethodOverrideHandler
public class MethodOverrideHandler : DelegatingHandler
{
private const string Header = "X-HTTP-Method-Override";
private readonly string[] methods = { "DELETE", "HEAD", "PUT" };
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Post && request.Headers.Contains(Header))
{
var method = request.Headers.GetValues(Header).FirstOrDefault();