Changeset 390


Ignore:
Timestamp:
Aug 7, 2022, 1:12:28 AM (2 years ago)
Author:
alloc
Message:

Added MarkersMod example

Location:
binary-improvements2
Files:
8 added
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • binary-improvements2/MapRendering/WebAndMapRendering.csproj

    r387 r390  
    9191    <Compile Include="Web\API\GetHostileLocation.cs" />
    9292    <Compile Include="Web\API\GetWebMods.cs" />
    93     <Compile Include="Web\API\Markers.cs" />
    9493    <Compile Include="Web\API\Null.cs" />
    9594    <Compile Include="Web\Handlers\RewriteHandler.cs" />
  • binary-improvements2/MarkersMod/Markers.cs

    r389 r390  
    1 using System;
    21using System.Collections.Generic;
    32using System.Net;
    43using AllocsFixes.JSON;
     4using AllocsFixes.NetConnections.Servers.Web;
     5using AllocsFixes.NetConnections.Servers.Web.API;
    56
    6 namespace AllocsFixes.NetConnections.Servers.Web.API {
     7namespace Examples {
    78        class Markers : AbsRestApi {
    8                 private readonly Dictionary<string, (string, string)> markers = new Dictionary<string, (string, string)> ();
     9                private const int NumRandomMarkers = 5;
     10
     11                private readonly Dictionary<string, (int, int)> markers = new Dictionary<string, (int, int)> ();
    912
    1013                private static readonly JSONArray emptyResult = new JSONArray ();
    1114               
    1215                public Markers () {
    13                         markers.Add (WebUtils.GenerateGuid (), ("539", "498"));
    14                         markers.Add (WebUtils.GenerateGuid (), ("-18", "524"));
    15                         markers.Add (WebUtils.GenerateGuid (), ("29", "-162"));
    16                         markers.Add (WebUtils.GenerateGuid (), ("458", "-257"));
     16                        GameRandom random = GameRandomManager.Instance.CreateGameRandom ();
     17                       
     18                        for (int i = 0; i < NumRandomMarkers; i++) {
     19                                int lat = random.RandomRange (-1000, 1001);
     20                                int lng = random.RandomRange (-1000, 1001);
     21
     22                                markers.Add (WebUtils.GenerateGuid (), (lat, lng));
     23                        }
    1724                }
    1825
     
    2330                                JSONArray result = new JSONArray ();
    2431
    25                                 foreach (KeyValuePair<string, (string, string)> kvp in markers) {
     32                                foreach (KeyValuePair<string, (int, int)> kvp in markers) {
    2633                                        JSONObject marker = new JSONObject ();
    2734                                        marker.Add ("id", new JSONString (kvp.Key));
    28                                         marker.Add ("lat", new JSONString (kvp.Value.Item1));
    29                                         marker.Add ("lng", new JSONString (kvp.Value.Item2));
     35                                        marker.Add ("lat", new JSONNumber (kvp.Value.Item1));
     36                                        marker.Add ("lng", new JSONNumber (kvp.Value.Item2));
    3037                                        result.Add (marker);
    3138                                }
     
    3542                        }
    3643
    37                         if (!markers.TryGetValue (id, out (string, string) location)) {
     44                        if (!markers.TryGetValue (id, out (int, int) location)) {
    3845                                SendEnvelopedResult (_context, emptyResult, HttpStatusCode.NotFound);
    3946                                return;
     
    4451                                JSONObject marker = new JSONObject ();
    4552                                marker.Add ("id", new JSONString (id));
    46                                 marker.Add ("lat", new JSONString (location.Item1));
    47                                 marker.Add ("lng", new JSONString (location.Item2));
     53                                marker.Add ("lat", new JSONNumber (location.Item1));
     54                                marker.Add ("lng", new JSONNumber (location.Item2));
    4855                                result.Add (marker);
    4956                                SendEnvelopedResult (_context, result);
     
    5360                protected override void HandleRestPost (RequestContext _context, JSONNode _jsonBody) {
    5461                        if (!(_jsonBody is JSONObject bodyObject)) {
    55                                
     62                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "BODY_NOT_OBJECT");
     63                                return;
    5664                        }
    5765
    58                         throw new NotImplementedException ();
     66                        if (!TryGetJsonField (bodyObject, "lat", out int lat)) {
     67                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "NO_OR_INVALID_LAT");
     68                                return;
     69                        }
     70
     71                        if (!TryGetJsonField (bodyObject, "lng", out int lng)) {
     72                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "NO_OR_INVALID_LNG");
     73                                return;
     74                        }
     75
     76                        string newId = WebUtils.GenerateGuid ();
     77                        markers.Add (newId, (lat, lng));
     78
     79                        JSONString result = new JSONString (newId);
     80                        SendEnvelopedResult (_context, result);
    5981                }
    6082
    6183                protected override void HandleRestPut (RequestContext _context, JSONNode _jsonBody) {
    62                         throw new NotImplementedException ();
     84                        if (!(_jsonBody is JSONObject bodyObject)) {
     85                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "BODY_NOT_OBJECT");
     86                                return;
     87                        }
     88
     89                        if (!TryGetJsonField (bodyObject, "lat", out int lat)) {
     90                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "NO_OR_INVALID_LAT");
     91                                return;
     92                        }
     93
     94                        if (!TryGetJsonField (bodyObject, "lng", out int lng)) {
     95                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "NO_OR_INVALID_LNG");
     96                                return;
     97                        }
     98
     99                        string id = _context.RequestPath;
     100
     101                        if (!markers.TryGetValue (id, out (int, int) location)) {
     102                                SendEnvelopedResult (_context, null, HttpStatusCode.NotFound, _jsonBody, "ID_NOT_FOUND");
     103                                return;
     104                        }
     105                       
     106                        markers [id] = (lat, lng);
     107
     108                        JSONObject result = new JSONObject ();
     109                        result.Add ("id", new JSONString (id));
     110                        result.Add ("lat", new JSONNumber (lat));
     111                        result.Add ("lng", new JSONNumber (lng));
     112                        SendEnvelopedResult (_context, result);
    63113                }
    64114
    65115                protected override void HandleRestDelete (RequestContext _context) {
    66                         throw new NotImplementedException ();
     116                        string id = _context.RequestPath;
     117
     118                        SendEnvelopedResult (_context, null, markers.Remove (id) ? HttpStatusCode.NoContent : HttpStatusCode.NotFound);
    67119                }
    68120        }
  • binary-improvements2/server-fixes.sln

    r382 r390  
    99EndProject
    1010Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpaceWizards.HttpListener", "SpaceWizards.HttpListener\SpaceWizards.HttpListener.csproj", "{E273D042-57F9-4E2E-8268-5053527E5287}"
     11EndProject
     12Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkersMod", "MarkersMod\MarkersMod.csproj", "{2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}"
    1113EndProject
    1214Global
     
    4244                {E273D042-57F9-4E2E-8268-5053527E5287}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    4345                {E273D042-57F9-4E2E-8268-5053527E5287}.Debug|Any CPU.Build.0 = Debug|Any CPU
     46                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
     47                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release|Any CPU.Build.0 = Release|Any CPU
     48                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Version|Any CPU.ActiveCfg = Release|Any CPU
     49                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Version|Any CPU.Build.0 = Release|Any CPU
     50                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     51                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
     52                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Profiler|Any CPU.ActiveCfg = Release_Profiler|Any CPU
     53                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Profiler|Any CPU.Build.0 = Release_Profiler|Any CPU
    4454        EndGlobalSection
    4555        GlobalSection(MonoDevelopProperties) = preSolution
Note: See TracChangeset for help on using the changeset viewer.