diff options
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/JsonHandler.cs')
| -rw-r--r-- | MediaBrowser.Common/Net/Handlers/JsonHandler.cs | 36 |
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);
+ }
+ }
+ }
+}
|
