Ignore:
Timestamp:
Feb 16, 2023, 3:50:53 PM (21 months ago)
Author:
alloc
Message:

Latest state including reworking to the permissions system

Location:
binary-improvements2/WebServer/src/WebAPI
Files:
4 edited

Legend:

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

    r402 r404  
    2525
    2626                        if (string.IsNullOrEmpty (id)) {
    27                                 bool first = true;
    28                                 foreach (IConsoleCommand cc in SdtdConsole.Instance.GetCommands ()) {
    29                                         if (!first) {
     27                                IList<IConsoleCommand> ccs = SdtdConsole.Instance.GetCommands ();
     28                                for (int i = 0; i < ccs.Count; i++) {
     29                                        IConsoleCommand cc = ccs [i];
     30                                       
     31                                        if (i > 0) {
    3032                                                writer.WriteValueSeparator ();
    3133                                        }
    32 
    33                                         first = false;
    3434
    3535                                        writeCommandJson (ref writer, cc, permissionLevel);
     
    8181                        _writer.WriteString (_command.GetHelp ());
    8282                               
    83                         int commandPermissionLevel = GameManager.Instance.adminTools.GetCommandPermissionLevel (_command.GetCommands ());
     83                        int commandPermissionLevel = GameManager.Instance.adminTools.Commands.GetCommandPermissionLevel (_command.GetCommands ());
    8484                        _writer.WriteRaw (jsonAllowedKey);
    8585                        _writer.WriteBoolean (_userPermissionLevel <= commandPermissionLevel);
     
    117117                        }
    118118
    119                         int commandPermissionLevel = GameManager.Instance.adminTools.GetCommandPermissionLevel (command.GetCommands ());
     119                        int commandPermissionLevel = GameManager.Instance.adminTools.Commands.GetCommandPermissionLevel (command.GetCommands ());
    120120
    121121                        if (_context.PermissionLevel > commandPermissionLevel) {
  • binary-improvements2/WebServer/src/WebAPI/APIs/ServerInfo.cs

    r402 r404  
     1using System.Collections.Generic;
    12using JetBrains.Annotations;
    23using Utf8Json;
     
    2223                        GameServerInfo gsi = ConnectionManager.Instance.LocalServerInfo;
    2324
    24                         bool first = true;
    25                        
    26                        
     25                        IList<GameInfoString> list = EnumUtils.Values<GameInfoString> ();
     26                        for (int i = 0; i < list.Count; i++) {
     27                                GameInfoString stringGamePref = list [i];
    2728
    28                         foreach (GameInfoString stringGamePref in EnumUtils.Values<GameInfoString> ()) {
    29                                 string value = gsi.GetValue (stringGamePref);
    30 
    31                                 if (!first) {
     29                                if (i > 0) {
    3230                                        writer.WriteValueSeparator ();
    3331                                }
    3432
    35                                 first = false;
    36                                
    3733                                writer.WriteString (stringGamePref.ToStringCached ());
    3834                                writer.WriteNameSeparator ();
    39                                
     35
    4036                                writer.WriteRaw (keyType);
    4137                                writer.WriteString ("string");
    42                                
     38
    4339                                writer.WriteRaw (keyValue);
    44                                 writer.WriteString (value);
    45                                
     40                                writer.WriteString (gsi.GetValue (stringGamePref));
     41
    4642                                writer.WriteEndObject ();
    4743                        }
    4844
    49                         foreach (GameInfoInt intGamePref in EnumUtils.Values<GameInfoInt> ()) {
    50                                 int value = gsi.GetValue (intGamePref);
     45                        IList<GameInfoInt> ints = EnumUtils.Values<GameInfoInt> ();
     46                        for (int i = 0; i < ints.Count; i++) {
     47                                GameInfoInt intGamePref = ints [i];
    5148
    52                                 if (!first) {
     49                                if (i > 0) {
    5350                                        writer.WriteValueSeparator ();
    5451                                }
    5552
    56                                 first = false;
    57                                
    5853                                writer.WriteString (intGamePref.ToStringCached ());
    5954                                writer.WriteNameSeparator ();
    60                                
     55
    6156                                writer.WriteRaw (keyType);
    6257                                writer.WriteString ("int");
    63                                
     58
    6459                                writer.WriteRaw (keyValue);
    65                                 writer.WriteInt32 (value);
    66                                
     60                                writer.WriteInt32 (gsi.GetValue (intGamePref));
     61
    6762                                writer.WriteEndObject ();
    6863                        }
    6964
    70                         foreach (GameInfoBool boolGamePref in EnumUtils.Values<GameInfoBool> ()) {
    71                                 bool value = gsi.GetValue (boolGamePref);
     65                        IList<GameInfoBool> prefs = EnumUtils.Values<GameInfoBool> ();
     66                        for (int i = 0; i < prefs.Count; i++) {
     67                                GameInfoBool boolGamePref = prefs [i];
    7268
    73                                 if (!first) {
     69                                if (i > 0) {
    7470                                        writer.WriteValueSeparator ();
    7571                                }
    7672
    77                                 first = false;
    78                                
    7973                                writer.WriteString (boolGamePref.ToStringCached ());
    8074                                writer.WriteNameSeparator ();
    81                                
     75
    8276                                writer.WriteRaw (keyType);
    8377                                writer.WriteString ("bool");
    84                                
     78
    8579                                writer.WriteRaw (keyValue);
    86                                 writer.WriteBoolean (value);
    87                                
     80                                writer.WriteBoolean (gsi.GetValue (boolGamePref));
     81
    8882                                writer.WriteEndObject ();
    8983                        }
    90                        
     84
    9185                        writer.WriteEndObject ();
    9286                       
  • binary-improvements2/WebServer/src/WebAPI/AbsRestApi.cs

    r402 r404  
    9595                }
    9696
    97                 protected void SendErrorResult (RequestContext _context, HttpStatusCode _statusCode, byte[] _jsonInputData = null, string _errorCode = null, Exception _exception = null) {
    98                         PrepareEnvelopedResult (out JsonWriter writer);
    99                         writer.WriteRaw (JsonEmptyData);
    100                         SendEnvelopedResult (_context, ref writer, _statusCode, _jsonInputData, _errorCode, _exception);
    101                 }
    102 
    10397                static AbsRestApi () {
    10498                        JsonWriter writer = new JsonWriter ();
     
    108102                }
    109103
     104                protected virtual void HandleRestGet (RequestContext _context) {
     105                        SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, null, "Unsupported");
     106                }
     107
     108                protected virtual void HandleRestPost (RequestContext _context, IDictionary<string, object> _jsonInput, byte[] _jsonInputData) {
     109                        SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, _jsonInputData, "Unsupported");
     110                }
     111
     112                protected virtual void HandleRestPut (RequestContext _context, IDictionary<string, object> _jsonInput, byte[] _jsonInputData) {
     113                        SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, _jsonInputData, "Unsupported");
     114                }
     115
     116                protected virtual void HandleRestDelete (RequestContext _context) {
     117                        SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, null, "Unsupported");
     118                }
     119
     120
     121#region Helpers
     122
    110123                protected static readonly byte[] JsonEmptyData;
    111124               
    112                 protected void PrepareEnvelopedResult (out JsonWriter _writer) {
     125                protected static void PrepareEnvelopedResult (out JsonWriter _writer) {
    113126                        WebUtils.PrepareEnvelopedResult (out _writer);
    114127                }
    115128
    116                 protected void SendEnvelopedResult (RequestContext _context, ref JsonWriter _writer, HttpStatusCode _statusCode = HttpStatusCode.OK,
     129                protected static void SendEnvelopedResult (RequestContext _context, ref JsonWriter _writer, HttpStatusCode _statusCode = HttpStatusCode.OK,
    117130                        byte[] _jsonInputData = null, string _errorCode = null, Exception _exception = null) {
    118131                       
     
    120133                }
    121134
    122                 protected bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out int _value) {
     135                protected static void SendErrorResult (RequestContext _context, HttpStatusCode _statusCode, byte[] _jsonInputData = null, string _errorCode = null, Exception _exception = null) {
     136                        PrepareEnvelopedResult (out JsonWriter writer);
     137                        writer.WriteRaw (JsonEmptyData);
     138                        SendEnvelopedResult (_context, ref writer, _statusCode, _jsonInputData, _errorCode, _exception);
     139                }
     140
     141                protected static bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out int _value) {
    123142                        _value = default;
    124143                       
     
    139158                }
    140159
    141                 protected bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out double _value) {
     160                protected static bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out double _value) {
    142161                        _value = default;
    143162                       
     
    158177                }
    159178
    160                 protected bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out string _value) {
     179                protected static bool TryGetJsonField (IDictionary<string, object> _jsonObject, string _fieldName, out string _value) {
    161180                        _value = default;
    162181                       
     
    176195                        }
    177196                }
    178 
    179                 protected virtual void HandleRestGet (RequestContext _context) {
    180                         SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, null, "Unsupported");
    181                 }
    182 
    183                 protected virtual void HandleRestPost (RequestContext _context, IDictionary<string, object> _jsonInput, byte[] _jsonInputData) {
    184                         SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, _jsonInputData, "Unsupported");
    185                 }
    186 
    187                 protected virtual void HandleRestPut (RequestContext _context, IDictionary<string, object> _jsonInput, byte[] _jsonInputData) {
    188                         SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, _jsonInputData, "Unsupported");
    189                 }
    190 
    191                 protected virtual void HandleRestDelete (RequestContext _context) {
    192                         SendErrorResult (_context, HttpStatusCode.MethodNotAllowed, null, "Unsupported");
    193                 }
     197               
     198
     199#endregion
    194200        }
    195201}
  • binary-improvements2/WebServer/src/WebAPI/Null.cs

    r391 r404  
    1 using System.Text;
     1using System;
     2using System.Text;
    23
    34namespace Webserver.WebAPI {
     
    1011                        _context.Response.ContentType = "text/plain";
    1112                        _context.Response.ContentEncoding = Encoding.ASCII;
    12                         _context.Response.OutputStream.Write (new byte[] { }, 0, 0);
     13                        _context.Response.OutputStream.Write (Array.Empty<byte> (), 0, 0);
    1314                }
    1415        }
Note: See TracChangeset for help on using the changeset viewer.