diff options
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs')
| -rw-r--r-- | MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs index 30113198b..03de398c9 100644 --- a/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/BaseJsonHandler.cs @@ -1,11 +1,58 @@ -
+using System.IO;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Serialization;
+
namespace MediaBrowser.Common.Net.Handlers
{
public abstract class BaseJsonHandler : BaseHandler
{
public override string ContentType
{
- get { return "application/json"; }
+ get { return MimeTypes.JsonMimeType; }
+ }
+
+ private bool _ObjectToSerializeEnsured = false;
+ private object _ObjectToSerialize;
+
+ private void EnsureObjectToSerialize()
+ {
+ if (!_ObjectToSerializeEnsured)
+ {
+ _ObjectToSerialize = GetObjectToSerialize();
+
+ if (_ObjectToSerialize == null)
+ {
+ StatusCode = 404;
+ }
+
+ _ObjectToSerializeEnsured = true;
+ }
+ }
+
+ private object ObjectToSerialize
+ {
+ get
+ {
+ EnsureObjectToSerialize();
+ return _ObjectToSerialize;
+ }
+ }
+
+ protected abstract object GetObjectToSerialize();
+
+ protected override void PrepareResponse()
+ {
+ base.PrepareResponse();
+
+ EnsureObjectToSerialize();
+ }
+
+ protected override Task WriteResponseToOutputStream(Stream stream)
+ {
+ return Task.Run(() =>
+ {
+ JsonSerializer.SerializeToStream(ObjectToSerialize, stream);
+ });
}
}
}
|
