source: binary-improvements/MapRendering/Web/Handlers/StaticHandler.cs@ 405

Last change on this file since 405 was 367, checked in by alloc, 3 years ago

Web:

  • Added SSE (ServerSentEvents) subsystem
  • Added log endpoint to SSE. Less heavy weight and more responsive way of watching the server log
  • Bunch of refactoring
File size: 1.2 KB
Line 
1using System.IO;
2using System.Net;
3using AllocsFixes.FileCache;
4
5namespace AllocsFixes.NetConnections.Servers.Web.Handlers {
6 public class StaticHandler : PathHandler {
7 private readonly AbstractCache cache;
8 private readonly string datapath;
9 private readonly bool logMissingFiles;
10
11 public StaticHandler (string _filePath, AbstractCache _cache, bool _logMissingFiles,
12 string _moduleName = null) : base (_moduleName) {
13 datapath = _filePath + (_filePath [_filePath.Length - 1] == '/' ? "" : "/");
14 cache = _cache;
15 logMissingFiles = _logMissingFiles;
16 }
17
18 public override void HandleRequest (HttpListenerRequest _req, HttpListenerResponse _resp, WebConnection _user,
19 int _permissionLevel) {
20 string fn = _req.Url.AbsolutePath.Remove (0, urlBasePath.Length);
21
22 byte[] content = cache.GetFileContent (datapath + fn);
23
24 if (content != null) {
25 _resp.ContentType = MimeType.GetMimeType (Path.GetExtension (fn));
26 _resp.ContentLength64 = content.Length;
27 _resp.OutputStream.Write (content, 0, content.Length);
28 } else {
29 _resp.StatusCode = (int) HttpStatusCode.NotFound;
30 if (logMissingFiles) {
31 Log.Out ("Web:Static:FileNotFound: \"" + _req.Url.AbsolutePath + "\" @ \"" + datapath + fn + "\"");
32 }
33 }
34 }
35 }
36}
Note: See TracBrowser for help on using the repository browser.