source: binary-improvements2/WebServer/src/WebMod.cs@ 391

Last change on this file since 391 was 391, checked in by alloc, 2 years ago

Major refactoring/cleanup

File size: 1.6 KB
Line 
1using System.IO;
2using AllocsFixes.FileCache;
3using Webserver.UrlHandlers;
4
5namespace Webserver {
6 public class WebMod {
7 private const string modsBaseUrl = "/webmods/";
8 private const string reactBundleName = "bundle.js";
9 private const string stylingFileName = "styling.css";
10
11 public readonly Mod ParentMod;
12 public readonly string ReactBundle; // Absolute web path to the React bundle if the mod has one, e.g. "/webmods/myMod/bundle.js"
13 public readonly string CssPath; // Absolute web path to a CSS if the mod has one, e.g. "/webmods/myMod/styling.css";
14
15 public WebMod (Web _parentWeb, Mod _parentMod, bool _useStaticCache) {
16 string folder = _parentMod.Path + "/WebMod";
17 if (!Directory.Exists (folder)) {
18 throw new InvalidDataException("No WebMod folder in mod");
19 }
20
21 string urlWebModBase = $"{modsBaseUrl}{_parentMod.FolderName}/";
22
23 ReactBundle = folder + "/" + reactBundleName;
24 if (File.Exists (ReactBundle)) {
25 ReactBundle = urlWebModBase + reactBundleName;
26 } else {
27 ReactBundle = null;
28 }
29
30 CssPath = folder + "/" + stylingFileName;
31 if (File.Exists (CssPath)) {
32 CssPath = urlWebModBase + stylingFileName;
33 } else {
34 CssPath = null;
35 }
36
37 if (ReactBundle == null && CssPath == null) {
38 throw new InvalidDataException($"WebMod folder has neither a {reactBundleName} nor a {stylingFileName}");
39 }
40
41 ParentMod = _parentMod;
42
43 _parentWeb.RegisterPathHandler (urlWebModBase, new StaticHandler (
44 folder,
45 _useStaticCache ? (AbstractCache) new SimpleCache () : new DirectAccess (),
46 false)
47 );
48 }
49 }
50}
Note: See TracBrowser for help on using the repository browser.