2
0

BaseJsonHandler.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System.IO;
  2. using System.Threading.Tasks;
  3. using MediaBrowser.Common.Serialization;
  4. namespace MediaBrowser.Common.Net.Handlers
  5. {
  6. public abstract class BaseJsonHandler<T> : BaseHandler
  7. {
  8. public override Task<string> GetContentType()
  9. {
  10. return Task.Run(() =>
  11. {
  12. return MimeTypes.JsonMimeType;
  13. });
  14. }
  15. private bool _ObjectToSerializeEnsured = false;
  16. private T _ObjectToSerialize;
  17. private async Task EnsureObjectToSerialize()
  18. {
  19. if (!_ObjectToSerializeEnsured)
  20. {
  21. _ObjectToSerialize = await GetObjectToSerialize();
  22. if (_ObjectToSerialize == null)
  23. {
  24. StatusCode = 404;
  25. }
  26. _ObjectToSerializeEnsured = true;
  27. }
  28. }
  29. protected abstract Task<T> GetObjectToSerialize();
  30. protected override async Task PrepareResponse()
  31. {
  32. await EnsureObjectToSerialize();
  33. }
  34. protected async override Task WriteResponseToOutputStream(Stream stream)
  35. {
  36. await EnsureObjectToSerialize();
  37. JsonSerializer.SerializeToStream<T>(_ObjectToSerialize, stream);
  38. }
  39. }
  40. }