source: binary-improvements2/WebServer/src/UrlHandlers/StaticHandler.cs@ 410

Last change on this file since 410 was 402, checked in by alloc, 22 months ago
  • Major refactoring
  • Using Utf8Json for (de)serialization
  • Moving APIs to REST
  • Removing dependencies from WebServer and MapRenderer to ServerFixes
File size: 1.2 KB
Line 
1using System.IO;
2using System.Net;
3using Webserver.FileCache;
4
5namespace Webserver.UrlHandlers {
6 public class StaticHandler : AbsHandler {
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 [^1] == '/' ? "" : "/")}";
14 cache = _cache;
15 logMissingFiles = _logMissingFiles;
16 }
17
18 public override void HandleRequest (RequestContext _context) {
19 string fn = _context.RequestPath.Remove (0, urlBasePath.Length);
20
21 byte[] content = cache.GetFileContent ($"{datapath}{fn}");
22
23 if (content != null) {
24 _context.Response.ContentType = MimeType.GetMimeType (Path.GetExtension (fn));
25 _context.Response.ContentLength64 = content.Length;
26 _context.Response.OutputStream.Write (content, 0, content.Length);
27 } else {
28 _context.Response.StatusCode = (int) HttpStatusCode.NotFound;
29 if (logMissingFiles) {
30 Log.Warning ($"[Web] Static: FileNotFound: \"{_context.RequestPath}\" @ \"{datapath}{fn}\"");
31 }
32 }
33 }
34 }
35}
Note: See TracBrowser for help on using the repository browser.