using System;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Web.Http.Filters;
using Newtonsoft.Json.Serialization;
namespace Filters
{
[AttributeUsage(AttributeTargets.All)]
public class CamelCasingFilterAttribute : ActionFilterAttribute
{
private static readonly JsonMediaTypeFormatter _camelCasingFormatter = new JsonMediaTypeFormatter();
static CamelCasingFilterAttribute()
{
_camelCasingFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext == null) return;
if (actionExecutedContext.Response == null) return;
var content = actionExecutedContext.Response.Content as ObjectContent;
if (content == null) return;
if (content.Formatter is JsonMediaTypeFormatter) {
actionExecutedContext.Response.Content = new ObjectContent(content.ObjectType, content.Value, _camelCasingFormatter);
}
}
}
}