ServiceStackHost.Runtime.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (c) Service Stack LLC. All Rights Reserved.
  2. // License: https://raw.github.com/ServiceStack/ServiceStack/master/license.txt
  3. using MediaBrowser.Model.Services;
  4. using ServiceStack.Support.WebHost;
  5. namespace ServiceStack
  6. {
  7. public abstract partial class ServiceStackHost
  8. {
  9. /// <summary>
  10. /// Applies the request filters. Returns whether or not the request has been handled
  11. /// and no more processing should be done.
  12. /// </summary>
  13. /// <returns></returns>
  14. public virtual void ApplyRequestFilters(IRequest req, IResponse res, object requestDto)
  15. {
  16. //Exec all RequestFilter attributes with Priority < 0
  17. var attributes = FilterAttributeCache.GetRequestFilterAttributes(requestDto.GetType());
  18. var i = 0;
  19. for (; i < attributes.Length && attributes[i].Priority < 0; i++)
  20. {
  21. var attribute = attributes[i];
  22. attribute.RequestFilter(req, res, requestDto);
  23. }
  24. //Exec global filters
  25. foreach (var requestFilter in GlobalRequestFilters)
  26. {
  27. requestFilter(req, res, requestDto);
  28. }
  29. //Exec remaining RequestFilter attributes with Priority >= 0
  30. for (; i < attributes.Length && attributes[i].Priority >= 0; i++)
  31. {
  32. var attribute = attributes[i];
  33. attribute.RequestFilter(req, res, requestDto);
  34. }
  35. }
  36. /// <summary>
  37. /// Applies the response filters. Returns whether or not the request has been handled
  38. /// and no more processing should be done.
  39. /// </summary>
  40. /// <returns></returns>
  41. public virtual void ApplyResponseFilters(IRequest req, IResponse res, object response)
  42. {
  43. //Exec global filters
  44. foreach (var responseFilter in GlobalResponseFilters)
  45. {
  46. responseFilter(req, res, response);
  47. }
  48. }
  49. }
  50. }