BaseEmbeddedResourceHandler.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. namespace MediaBrowser.Common.Net.Handlers
  5. {
  6. public abstract class BaseEmbeddedResourceHandler : BaseHandler
  7. {
  8. public BaseEmbeddedResourceHandler(string resourcePath)
  9. : base()
  10. {
  11. ResourcePath = resourcePath;
  12. }
  13. protected string ResourcePath { get; set; }
  14. public override string ContentType
  15. {
  16. get
  17. {
  18. string extension = Path.GetExtension(ResourcePath);
  19. if (extension.EndsWith("jpeg", StringComparison.OrdinalIgnoreCase) || extension.EndsWith("jpg", StringComparison.OrdinalIgnoreCase))
  20. {
  21. return "image/jpeg";
  22. }
  23. else if (extension.EndsWith("png", StringComparison.OrdinalIgnoreCase))
  24. {
  25. return "image/png";
  26. }
  27. else if (extension.EndsWith("ico", StringComparison.OrdinalIgnoreCase))
  28. {
  29. return "image/ico";
  30. }
  31. else if (extension.EndsWith("js", StringComparison.OrdinalIgnoreCase))
  32. {
  33. return "application/x-javascript";
  34. }
  35. else if (extension.EndsWith("css", StringComparison.OrdinalIgnoreCase))
  36. {
  37. return "text/css";
  38. }
  39. else if (extension.EndsWith("html", StringComparison.OrdinalIgnoreCase))
  40. {
  41. return "text/html; charset=utf-8";
  42. }
  43. return "text/plain; charset=utf-8";
  44. }
  45. }
  46. protected override Task WriteResponseToOutputStream(Stream stream)
  47. {
  48. return GetEmbeddedResourceStream().CopyToAsync(stream);
  49. }
  50. protected abstract Stream GetEmbeddedResourceStream();
  51. }
  52. }