using System;\r
using System.IO;\r
+using System.Linq;\r
using System.Net;\r
using System.Net.Sockets;\r
using System.Text;\r
SendFile(client, csv, "text/csv; charset=Shift_JIS");\r
continue;\r
}\r
+ if (path.EndsWith(".json", StringComparison.OrdinalIgnoreCase) &&\r
+ File.Exists(full.Replace(".json", ".csv")))\r
+ {\r
+ SendJsonData(client, full);\r
+ continue;\r
+ }\r
if (path.EndsWith(".js", StringComparison.OrdinalIgnoreCase) && File.Exists(full))\r
{\r
SendFile(client, full, "application/javascript");\r
}\r
}\r
\r
+ private void SendJsonData(Socket client, string path)\r
+ {\r
+ var header = new StreamWriter(new MemoryStream(), Encoding.ASCII);\r
+ header.Write("HTTP/1.1 200 OK\r\n");\r
+ header.Write("Server: KancolleSniffer\r\n");\r
+ header.Write("Date: {0:R}\r\n", DateTime.Now);\r
+ header.Write("Content-Type: {0}\r\n", "application/json; charset=Shift_JIS");\r
+ header.Write("Connection: close\r\n\r\n");\r
+ header.Flush();\r
+ client.Send(((MemoryStream)header.BaseStream).ToArray());\r
+\r
+ var encoding = Encoding.GetEncoding("Shift_JIS");\r
+ client.Send(encoding.GetBytes("{ \"data\": [\n"));\r
+ var delimiter = "";\r
+ foreach (var line in File.ReadLines(path.Replace(".json", ".csv"), encoding).Skip(1))\r
+ {\r
+ client.Send(encoding.GetBytes(delimiter + "[\"" + string.Join("\",\"", line.Split(',')) + "\"]"));\r
+ delimiter = ",\n";\r
+ }\r
+ client.Send(encoding.GetBytes("]}\n"));\r
+ }\r
+\r
private void SendFile(Socket client, string path, string mime)\r
{\r
using (var writer = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
writer.Write("Content-Type: {0}\r\n", mime);\r
writer.Write("Connection: close\r\n\r\n");\r
writer.Flush();\r
- client.SendFile(path, ((MemoryStream)writer.BaseStream).ToArray(), null, TransmitFileOptions.UseDefaultWorkerThread);\r
+ client.SendFile(path, ((MemoryStream)writer.BaseStream).ToArray(), null,\r
+ TransmitFileOptions.UseDefaultWorkerThread);\r
}\r
}\r
\r