source: TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/Mods.cs@ 447

Last change on this file since 447 was 434, checked in by alloc, 18 months ago

Added permission management APIs

File size: 2.5 KB
Line 
1using JetBrains.Annotations;
2using Utf8Json;
3using Webserver.Permissions;
4
5namespace Webserver.WebAPI.APIs.GameData {
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 private void writeModJson (ref JsonWriter _writer, WebMod _webMod) {
59 _writer.WritePropertyName ("name");
60 _writer.WriteString (_webMod.ParentMod.Name);
61
62 _writer.WriteValueSeparator ();
63 _writer.WritePropertyName ("displayName");
64 _writer.WriteString (_webMod.ParentMod.DisplayName);
65
66 _writer.WriteValueSeparator ();
67 _writer.WritePropertyName ("description");
68 _writer.WriteString (_webMod.ParentMod.Description);
69
70 _writer.WriteValueSeparator ();
71 _writer.WritePropertyName ("author");
72 _writer.WriteString (_webMod.ParentMod.Author);
73
74 _writer.WriteValueSeparator ();
75 _writer.WritePropertyName ("version");
76 _writer.WriteString (_webMod.ParentMod.VersionString);
77
78 _writer.WriteValueSeparator ();
79 _writer.WritePropertyName ("website");
80 _writer.WriteString (_webMod.ParentMod.Website);
81 }
82
83 protected override void HandleRestGet (RequestContext _context) {
84 PrepareEnvelopedResult (out JsonWriter writer);
85 writer.WriteRaw (loadedWebMods);
86 SendEnvelopedResult (_context, ref writer);
87 }
88
89 public override int DefaultPermissionLevel () => AdminWebModules.PermissionLevelGuest;
90 }
91}
Note: See TracBrowser for help on using the repository browser.