Ignore:
Timestamp:
Jul 31, 2023, 4:06:13 PM (16 months ago)
Author:
alloc
Message:

25_30_44

  • Got rid (mostly) of custom JSON serialization
  • Some code cleanup
File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/WebCommandResult.cs

    r454 r455  
    55using System.Text;
    66using System.Threading;
    7 using AllocsFixes.JSON;
    87using UnityEngine;
     8using Utf8Json;
    99using Webserver;
    1010
    11 namespace AllocsFixes.NetConnections.Servers.Web {
     11namespace AllocsFixes.Web {
    1212        public class WebCommandResult : IConsoleConnection {
    1313                public enum ResultType {
    1414                        Full,
    1515                        ResultOnly,
    16                         Raw
     16                        Raw,
    1717                }
    1818
     
    3535                        responseType = _resultType;
    3636                }
     37               
     38                private static readonly byte[] jsonKeyCommand = JsonWriter.GetEncodedPropertyNameWithBeginObject ("command");
     39                private static readonly byte[] jsonKeyParameters = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("parameters");
     40                private static readonly byte[] jsonKeyResult = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("result");
    3741
    3842                public void SendLines (List<string> _output) {
     
    4448                        }
    4549
     50                        string result = sb.ToString ();
     51
    4652                        try {
    4753                                context.Response.SendChunked = false;
    4854
    4955                                if (responseType == ResultType.Raw) {
    50                                         WebUtils.WriteText (context.Response, sb.ToString ());
     56                                        WebUtils.WriteText (context.Response, result);
    5157                                } else {
    52                                         JSONNode result;
     58                                        JsonWriter writer = new JsonWriter ();
     59
    5360                                        if (responseType == ResultType.ResultOnly) {
    54                                                 result = new JSONString (sb.ToString ());
     61                                                writer.WriteString (result);
    5562                                        } else {
    56                                                 JSONObject resultObj = new JSONObject ();
    57 
    58                                                 resultObj.Add ("command", new JSONString (command));
    59                                                 resultObj.Add ("parameters", new JSONString (parameters));
    60                                                 resultObj.Add ("result", new JSONString (sb.ToString ()));
    61 
    62                                                 result = resultObj;
     63                                                writer.WriteRaw (jsonKeyCommand);
     64                                                writer.WriteString (command);
     65                                               
     66                                                writer.WriteRaw (jsonKeyParameters);
     67                                                writer.WriteString (parameters);
     68                                               
     69                                                writer.WriteRaw (jsonKeyResult);
     70                                                writer.WriteString (result);
     71                                               
     72                                                writer.WriteEndObject ();
    6373                                        }
    6474
    65                                         LegacyApiHelper.WriteJSON (context.Response, result);
     75                                        WebUtils.WriteJsonData (context.Response, ref writer);
    6676                                }
    6777                        } catch (IOException e) {
    6878                                if (e.InnerException is SocketException) {
    69                                         Log.Out ("Error in WebCommandResult.SendLines(): Remote host closed connection: " + e.InnerException.Message);
     79                                        Log.Out ($"Error in WebCommandResult.SendLines(): Remote host closed connection: {e.InnerException.Message}");
    7080                                } else {
    71                                         Log.Out ("Error (IO) in WebCommandResult.SendLines(): " + e);
     81                                        Log.Out ($"Error (IO) in WebCommandResult.SendLines(): {e}");
    7282                                }
    7383                        } catch (Exception e) {
    74                                 Log.Out ("Error in WebCommandResult.SendLines(): " + e);
     84                                Log.Out ($"Error in WebCommandResult.SendLines(): {e}");
    7585                        } finally {
    7686                                context.Response?.Close ();
     
    99109
    100110                public string GetDescription () {
    101                         return "WebCommandResult_for_" + command;
     111                        return $"WebCommandResult_for_{command}";
    102112                }
    103113        }
Note: See TracChangeset for help on using the changeset viewer.