source: binary-improvements2/WebServer/src/WebAPI/APIs/Mods.cs@ 427

Last change on this file since 427 was 426, checked in by alloc, 19 months ago

*Updated web permissions system
*Fixed webpermissions command
*Moved API "webmods" to "mods", also lists non-webmod mods

File size: 2.6 KB
Line 
1using JetBrains.Annotations;
2using Utf8Json;
3using Webserver.Permissions;
4
5namespace Webserver.WebAPI.APIs {
6 [UsedImplicitly]
7 public class Mods : AbsRestApi {
8 private readonly byte[] loadedWebMods;
9
10 public Mods (Web _parent) {
11 JsonWriter writer = new JsonWriter ();
12 writer.WriteBeginArray ();
13
14 for (int i = 0; i < _parent.webMods.Count; i++) {
15 WebMod webMod = _parent.webMods [i];
16
17 if (i > 0) {
18 writer.WriteValueSeparator ();
19 }
20
21 writer.WriteBeginObject ();
22
23 writeModJson (ref writer, webMod);
24
25 if (webMod.ReactBundle != null || webMod.CssPath != null) {
26 writer.WriteValueSeparator ();
27
28 writer.WritePropertyName ("web");
29 writer.WriteBeginObject ();
30
31 string webModReactBundle = webMod.ReactBundle;
32 if (webModReactBundle != null) {
33 writer.WritePropertyName ("bundle");
34 writer.WriteString (webModReactBundle);
35 }
36
37 string webModCssFile = webMod.CssPath;
38 if (webModCssFile != null) {
39 if (webModReactBundle != null) {
40 writer.WriteValueSeparator ();
41 }
42
43 writer.WritePropertyName ("css");
44 writer.WriteString (webModCssFile);
45 }
46
47 writer.WriteEndObject ();
48 }
49
50 writer.WriteEndObject ();
51 }
52
53 writer.WriteEndArray ();
54
55 loadedWebMods = writer.ToUtf8ByteArray ();
56 }
57
58 protected override void HandleRestGet (RequestContext _context) {
59 PrepareEnvelopedResult (out JsonWriter writer);
60 writer.WriteRaw (loadedWebMods);
61 SendEnvelopedResult (_context, ref writer);
62 }
63
64 public override int DefaultPermissionLevel () => AdminWebModules.PermissionLevelGuest;
65
66 private void writeModJson (ref JsonWriter _writer, WebMod _webMod) {
67 _writer.WritePropertyName ("name");
68 _writer.WriteString (_webMod.ParentMod.Name);
69
70 _writer.WriteValueSeparator ();
71 _writer.WritePropertyName ("displayName");
72 JsonCommons.WriteStringOrNull (ref _writer, _webMod.ParentMod.DisplayName);
73
74 _writer.WriteValueSeparator ();
75 _writer.WritePropertyName ("description");
76 JsonCommons.WriteStringOrNull (ref _writer, _webMod.ParentMod.Description);
77
78 _writer.WriteValueSeparator ();
79 _writer.WritePropertyName ("author");
80 JsonCommons.WriteStringOrNull (ref _writer, _webMod.ParentMod.Author);
81
82 _writer.WriteValueSeparator ();
83 _writer.WritePropertyName ("version");
84 JsonCommons.WriteStringOrNull (ref _writer, _webMod.ParentMod.VersionString);
85
86 _writer.WriteValueSeparator ();
87 _writer.WritePropertyName ("website");
88 JsonCommons.WriteStringOrNull (ref _writer, _webMod.ParentMod.Website);
89 }
90 }
91}
Note: See TracBrowser for help on using the repository browser.