blob: 40824bd2c4f98b9df95221161569ae402a6d35c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
using MediaBrowser.Controller.Net;
using System;
using System.IO;
using System.IO.Compression;
using MediaBrowser.Common.Json;
using MediaBrowser.Model.Entities;
using MediaBrowser.Controller;
namespace MediaBrowser.Api.HttpHandlers
{
public class ItemHandler : Response
{
public ItemHandler(RequestContext ctx)
: base(ctx)
{
ContentType = "application/json";
Headers["Content-Encoding"] = "gzip";
WriteStream = s =>
{
WriteReponse(s);
s.Close();
};
}
private Guid ItemId
{
get
{
string id = RequestContext.Request.QueryString["id"];
if (string.IsNullOrEmpty(id))
{
return Guid.Empty;
}
return Guid.Parse(id);
}
}
BaseItem Item
{
get
{
Guid id = ItemId;
if (id == Guid.Empty)
{
return Kernel.Instance.RootFolder;
}
return Kernel.Instance.RootFolder.FindById(id);
}
}
private void WriteReponse(Stream stream)
{
BaseItem item = Item;
object returnObject;
Folder folder = item as Folder;
if (folder != null)
{
returnObject = new
{
Item = item,
Children = folder.Children
};
}
else
{
returnObject = new
{
Item = item
};
}
WriteJsonResponse(returnObject, stream);
}
private void WriteJsonResponse(object obj, Stream stream)
{
using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress, false))
{
JsonSerializer.Serialize(obj, gzipStream);
//gzipStream.Flush();
}
}
}
}
|