CompressionServiceRunner.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. namespace InABox.API
  3. {
  4. public class CompressionServiceRunner<TRequest> : ServiceRunner<TRequest>
  5. {
  6. public CompressionServiceRunner(IAppHost appHost, ActionContext actionContext) : base(appHost, actionContext)
  7. {
  8. }
  9. public override void OnBeforeExecute(IRequestContext requestContext, TRequest request)
  10. {
  11. base.OnBeforeExecute(requestContext, request);
  12. }
  13. public override object OnAfterExecute(IRequestContext requestContext, object response)
  14. {
  15. bool bCompress = false;
  16. string queryString = new System.Uri(requestContext.AbsoluteUri).Query;
  17. var queryDictionary = System.Web.HttpUtility.ParseQueryString(queryString.ToLower());
  18. if (queryDictionary.AllKeys.Contains("compression"))
  19. bCompress = queryDictionary.Get("compression").Equals("gzip") || queryDictionary.Get("compression").Equals("deflate");
  20. if ((response != null) && (bCompress) && !(response is CompressedResult))
  21. response = requestContext.ToOptimizedResult(response);
  22. var result = base.OnAfterExecute(requestContext, response);
  23. return result;
  24. }
  25. public override object HandleException(IRequestContext requestContext, TRequest request, Exception ex)
  26. {
  27. return base.HandleException(requestContext, request, ex);
  28. }
  29. }
  30. }
  31. */