/src/Server/DeviceHive.API/Filters/HttpCreatedResponseAttribute.cs
C# | 31 lines | 30 code | 1 blank | 0 comment | 5 complexity | bfa2fde6b7bcc29f6c51a6ad72ef68f8 MD5 | raw file
Possible License(s): MIT
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Web.Http.Filters;
- using System.Web.Http.Routing;
- using Newtonsoft.Json.Linq;
- namespace DeviceHive.API.Filters
- {
- public class HttpCreatedResponseAttribute : ActionFilterAttribute
- {
- public override void OnActionExecuted(HttpActionExecutedContext context)
- {
- if (context.Response != null && context.Response.IsSuccessStatusCode)
- {
- context.Response.StatusCode = HttpStatusCode.Created;
- context.Response.Content.ReadAsStringAsync().ContinueWith(task =>
- {
- var result = JObject.Parse(task.Result);
- if (result["id"] != null)
- {
- var controller = context.ActionContext.ControllerContext.ControllerDescriptor.ControllerName;
- var route = new UrlHelper(context.Request).Route(null, new { controller = controller, id = result["id"] });
- context.Response.Headers.Location = new Uri(context.Request.RequestUri, route);
- }
- }).Wait();
- }
- }
- }
- }