Ignore:
Timestamp:
Jan 27, 2023, 7:28:00 PM (22 months ago)
Author:
alloc
Message:
  • Major refactoring
  • Using Utf8Json for (de)serialization
  • Moving APIs to REST
  • Removing dependencies from WebServer and MapRenderer to ServerFixes
Location:
binary-improvements2/WebServer/src/WebAPI/APIs
Files:
1 added
1 moved

Legend:

Unmodified
Added
Removed
  • binary-improvements2/WebServer/src/WebAPI/APIs/WebMods.cs

    r401 r402  
    1 using AllocsFixes.JSON;
    21using JetBrains.Annotations;
     2using Utf8Json;
    33
    4 namespace Webserver.WebAPI {
     4namespace Webserver.WebAPI.APIs {
    55        [UsedImplicitly]
    6         public class GetWebMods : AbsWebAPI {
    7                 private readonly JsonArray loadedWebMods = new JsonArray ();
     6        public class WebMods : AbsRestApi {
     7                private readonly byte[] loadedWebMods;
    88
    9                 public GetWebMods (Web _parent) {
     9                public WebMods (Web _parent) {
     10                        JsonWriter writer = new JsonWriter ();
     11                        writer.WriteBeginArray ();
     12
     13                        bool first = true;
    1014                        foreach (WebMod webMod in _parent.webMods) {
    11                                 JsonObject modJson = new JsonObject ();
     15                                if (!first) {
     16                                        writer.WriteValueSeparator ();
     17                                }
     18                                first = false;
     19                               
     20                                writer.WriteBeginObject ();
     21                               
     22                                writer.WriteString ("name");
     23                                writer.WriteNameSeparator ();
     24                                writer.WriteString (webMod.ParentMod.Name);
    1225
    13                                 modJson.Add ("name", new JsonString (webMod.ParentMod.ModInfo.Name.Value));
    14                                
    1526                                string webModReactBundle = webMod.ReactBundle;
    1627                                if (webModReactBundle != null) {
    17                                         modJson.Add ("bundle", new JsonString (webModReactBundle));
     28                                        writer.WriteValueSeparator ();
     29                                        writer.WriteString ("bundle");
     30                                        writer.WriteNameSeparator ();
     31                                        writer.WriteString (webModReactBundle);
    1832                                }
    19 
     33                               
    2034                                string webModCssFile = webMod.CssPath;
    2135                                if (webModCssFile != null) {
    22                                         modJson.Add ("css", new JsonString (webModCssFile));
     36                                        writer.WriteValueSeparator ();
     37                                        writer.WriteString ("css");
     38                                        writer.WriteNameSeparator ();
     39                                        writer.WriteString (webModCssFile);
    2340                                }
     41                               
     42                                writer.WriteEndObject ();
     43                        }
     44                       
     45                        writer.WriteEndArray ();
    2446
    25                                 loadedWebMods.Add (modJson);
    26                         }
     47                        loadedWebMods = writer.ToUtf8ByteArray ();
    2748                }
    2849
    29                 public override void HandleRequest (RequestContext _context) {
    30                         WebUtils.WriteJson (_context.Response, loadedWebMods);
     50                protected override void HandleRestGet (RequestContext _context) {
     51                        PrepareEnvelopedResult (out JsonWriter writer);
     52                        writer.WriteRaw (loadedWebMods);
     53                        SendEnvelopedResult (_context, ref writer);
    3154                }
    3255
Note: See TracChangeset for help on using the changeset viewer.