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

Last change on this file since 428 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
RevLine 
[391]1using JetBrains.Annotations;
[402]2using Utf8Json;
[426]3using Webserver.Permissions;
[391]4
[402]5namespace Webserver.WebAPI.APIs {
[391]6 [UsedImplicitly]
[426]7 public class Mods : AbsRestApi {
[402]8 private readonly byte[] loadedWebMods;
[391]9
[426]10 public Mods (Web _parent) {
[402]11 JsonWriter writer = new JsonWriter ();
12 writer.WriteBeginArray ();
13
[408]14 for (int i = 0; i < _parent.webMods.Count; i++) {
15 WebMod webMod = _parent.webMods [i];
[426]16
[408]17 if (i > 0) {
[402]18 writer.WriteValueSeparator ();
19 }
[426]20
[402]21 writer.WriteBeginObject ();
[408]22
[426]23 writeModJson (ref writer, webMod);
[391]24
[426]25 if (webMod.ReactBundle != null || webMod.CssPath != null) {
[402]26 writer.WriteValueSeparator ();
[408]27
[426]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 ();
[391]48 }
[408]49
[402]50 writer.WriteEndObject ();
51 }
[408]52
[402]53 writer.WriteEndArray ();
[391]54
[402]55 loadedWebMods = writer.ToUtf8ByteArray ();
[391]56 }
57
[402]58 protected override void HandleRestGet (RequestContext _context) {
59 PrepareEnvelopedResult (out JsonWriter writer);
60 writer.WriteRaw (loadedWebMods);
61 SendEnvelopedResult (_context, ref writer);
[391]62 }
63
[426]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 }
[391]90 }
[426]91}
Note: See TracBrowser for help on using the repository browser.