diff --git a/Ooui/Client.js b/Ooui/Client.js new file mode 100644 index 0000000..1868524 --- /dev/null +++ b/Ooui/Client.js @@ -0,0 +1,4 @@ + + +alert("Hello"); + diff --git a/Ooui/Ooui.csproj b/Ooui/Ooui.csproj index fdfd7da..e10537f 100644 --- a/Ooui/Ooui.csproj +++ b/Ooui/Ooui.csproj @@ -5,4 +5,7 @@ + + + \ No newline at end of file diff --git a/Ooui/Server.cs b/Ooui/Server.cs index 510e1f1..e5a3c13 100644 --- a/Ooui/Server.cs +++ b/Ooui/Server.cs @@ -14,6 +14,22 @@ namespace Ooui readonly Dictionary> publishedPaths = new Dictionary> (); + readonly static byte[] clientJsBytes; + + static Server () + { + var asm = typeof(Server).Assembly; + System.Console.WriteLine("ASM = {0}", asm); + foreach (var n in asm.GetManifestResourceNames()) { + System.Console.WriteLine(" {0}", n); + } + using (var s = asm.GetManifestResourceStream ("Ooui.Client.js")) { + using (var r = new StreamReader (s)) { + clientJsBytes = Encoding.UTF8.GetBytes (r.ReadToEnd ()); + } + } + } + public Task RunAsync (string listenerPrefix) { return RunAsync (listenerPrefix, CancellationToken.None); @@ -55,15 +71,26 @@ namespace Ooui Console.WriteLine ($"{listenerContext.Request.HttpMethod} {url.LocalPath}"); + var response = listenerContext.Response; + Func ctor; - if (publishedPaths.TryGetValue (path, out ctor)) { + + if (path == "/client.js") { + response.ContentLength64 = clientJsBytes.LongLength; + response.ContentType = "application/javascript"; + response.ContentEncoding = Encoding.UTF8; + using (var s = response.OutputStream) { + s.Write (clientJsBytes, 0, clientJsBytes.Length); + } + } + else if (publishedPaths.TryGetValue (path, out ctor)) { var element = ctor (); RegisterElement (element); - WriteElementHtml (element, listenerContext.Response); + WriteElementHtml (element, response); } else { - listenerContext.Response.StatusCode = 404; - listenerContext.Response.Close (); + response.StatusCode = 404; + response.Close (); } } @@ -74,9 +101,15 @@ namespace Ooui void WriteElementHtml (Element element, HttpListenerResponse response) { response.StatusCode = 200; + response.ContentType = "text/html"; + response.ContentEncoding = Encoding.UTF8; using (var s = response.OutputStream) { using (var w = new StreamWriter (s, Encoding.UTF8)) { - w.WriteLine ($"Hello {element}"); + w.WriteLine ($""); + w.WriteLine ($"{element}"); + w.WriteLine ($""); + w.WriteLine ($""); + w.WriteLine ($""); } } response.Close ();