aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/Handlers/JsonHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/JsonHandler.cs')
-rw-r--r--MediaBrowser.Common/Net/Handlers/JsonHandler.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/JsonHandler.cs b/MediaBrowser.Common/Net/Handlers/JsonHandler.cs
new file mode 100644
index 000000000..da1234b4e
--- /dev/null
+++ b/MediaBrowser.Common/Net/Handlers/JsonHandler.cs
@@ -0,0 +1,36 @@
+using System.IO;
+using System.IO.Compression;
+using MediaBrowser.Common.Json;
+
+namespace MediaBrowser.Common.Net.Handlers
+{
+ public abstract class JsonHandler : Response
+ {
+ public JsonHandler(RequestContext ctx)
+ : base(ctx)
+ {
+ Headers["Content-Encoding"] = "gzip";
+
+ WriteStream = s =>
+ {
+ WriteReponse(s);
+ s.Close();
+ };
+ }
+
+ public override string ContentType
+ {
+ get { return "application/json"; }
+ }
+
+ protected abstract object ObjectToSerialize { get; }
+
+ private void WriteReponse(Stream stream)
+ {
+ using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress, false))
+ {
+ JsonSerializer.Serialize(ObjectToSerialize, gzipStream);
+ }
+ }
+ }
+}