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

Last change on this file since 332 was 332, checked in by alloc, 5 years ago

*Latest optimizations

File size: 1.3 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                private readonly string staticPart;
11
12                public StaticHandler (string staticPart, string filePath, AbstractCache cache, bool logMissingFiles,
13                        string moduleName = null) : base (moduleName) {
14                        this.staticPart = staticPart;
15                        datapath = filePath + (filePath [filePath.Length - 1] == '/' ? "" : "/");
16                        this.cache = cache;
17                        this.logMissingFiles = logMissingFiles;
18                }
19
20                public override void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user,
21                        int permissionLevel) {
22                        string fn = req.Url.AbsolutePath.Remove (0, staticPart.Length);
23
24                        byte[] content = cache.GetFileContent (datapath + fn);
25
26                        if (content != null) {
27                                resp.ContentType = MimeType.GetMimeType (Path.GetExtension (fn));
28                                resp.ContentLength64 = content.Length;
29                                resp.OutputStream.Write (content, 0, content.Length);
30                        } else {
31                                resp.StatusCode = (int) HttpStatusCode.NotFound;
32                                if (logMissingFiles) {
33                                        Log.Out ("Web:Static:FileNotFound: \"" + req.Url.AbsolutePath + "\" @ \"" + datapath + fn + "\"");
34                                }
35                        }
36                }
37        }
38}
Note: See TracBrowser for help on using the repository browser.