22
33#include " palettes.h"
44
5- #define JSON_PATH_STATE 1
6- #define JSON_PATH_INFO 2
7- #define JSON_PATH_STATE_INFO 3
8- #define JSON_PATH_NODES 4
9- #define JSON_PATH_PALETTES 5
10- #define JSON_PATH_FXDATA 6
11- #define JSON_PATH_NETWORKS 7
12- #define JSON_PATH_EFFECTS 8
13-
145/*
156 * JSON API (De)serialization
167 */
@@ -1036,16 +1027,20 @@ class LockedJsonResponse: public AsyncJsonResponse {
10361027
10371028void serveJson (AsyncWebServerRequest* request)
10381029{
1039- byte subJson = 0 ;
1030+ enum class json_target {
1031+ all, state, info, state_info, nodes, effects, palettes, fxdata, networks
1032+ };
1033+ json_target subJson = json_target::all;
1034+
10401035 const String& url = request->url ();
1041- if (url.indexOf (" state" ) > 0 ) subJson = JSON_PATH_STATE ;
1042- else if (url.indexOf (" info" ) > 0 ) subJson = JSON_PATH_INFO ;
1043- else if (url.indexOf (" si" ) > 0 ) subJson = JSON_PATH_STATE_INFO ;
1044- else if (url.indexOf (F (" nodes" )) > 0 ) subJson = JSON_PATH_NODES ;
1045- else if (url.indexOf (F (" eff" )) > 0 ) subJson = JSON_PATH_EFFECTS ;
1046- else if (url.indexOf (F (" palx" )) > 0 ) subJson = JSON_PATH_PALETTES ;
1047- else if (url.indexOf (F (" fxda" )) > 0 ) subJson = JSON_PATH_FXDATA ;
1048- else if (url.indexOf (F (" net" )) > 0 ) subJson = JSON_PATH_NETWORKS ;
1036+ if (url.indexOf (" state" ) > 0 ) subJson = json_target::state ;
1037+ else if (url.indexOf (" info" ) > 0 ) subJson = json_target::info ;
1038+ else if (url.indexOf (" si" ) > 0 ) subJson = json_target::state_info ;
1039+ else if (url.indexOf (F (" nodes" )) > 0 ) subJson = json_target::nodes ;
1040+ else if (url.indexOf (F (" eff" )) > 0 ) subJson = json_target::effects ;
1041+ else if (url.indexOf (F (" palx" )) > 0 ) subJson = json_target::palettes ;
1042+ else if (url.indexOf (F (" fxda" )) > 0 ) subJson = json_target::fxdata ;
1043+ else if (url.indexOf (F (" net" )) > 0 ) subJson = json_target::networks ;
10491044 #ifdef WLED_ENABLE_JSONLIVE
10501045 else if (url.indexOf (" live" ) > 0 ) {
10511046 serveLiveLeds (request);
@@ -1070,32 +1065,33 @@ void serveJson(AsyncWebServerRequest* request)
10701065 }
10711066 // releaseJSONBufferLock() will be called when "response" is destroyed (from AsyncWebServer)
10721067 // make sure you delete "response" if no "request->send(response);" is made
1073- LockedJsonResponse *response = new LockedJsonResponse (pDoc, subJson==JSON_PATH_FXDATA || subJson==JSON_PATH_EFFECTS ); // will clear and convert JsonDocument into JsonArray if necessary
1068+ LockedJsonResponse *response = new LockedJsonResponse (pDoc, subJson==json_target::fxdata || subJson==json_target::effects ); // will clear and convert JsonDocument into JsonArray if necessary
10741069
10751070 JsonVariant lDoc = response->getRoot ();
10761071
10771072 switch (subJson)
10781073 {
1079- case JSON_PATH_STATE :
1074+ case json_target::state :
10801075 serializeState (lDoc); break ;
1081- case JSON_PATH_INFO :
1076+ case json_target::info :
10821077 serializeInfo (lDoc); break ;
1083- case JSON_PATH_NODES :
1078+ case json_target::nodes :
10841079 serializeNodes (lDoc); break ;
1085- case JSON_PATH_PALETTES :
1080+ case json_target::palettes :
10861081 serializePalettes (lDoc, request->hasParam (F (" page" )) ? request->getParam (F (" page" ))->value ().toInt () : 0 ); break ;
1087- case JSON_PATH_EFFECTS :
1082+ case json_target::effects :
10881083 serializeModeNames (lDoc); break ;
1089- case JSON_PATH_FXDATA :
1084+ case json_target::fxdata :
10901085 serializeModeData (lDoc); break ;
1091- case JSON_PATH_NETWORKS :
1086+ case json_target::networks :
10921087 serializeNetworks (lDoc); break ;
1093- default : // all
1088+ case json_target::state_info:
1089+ case json_target::all:
10941090 JsonObject state = lDoc.createNestedObject (" state" );
10951091 serializeState (state);
10961092 JsonObject info = lDoc.createNestedObject (" info" );
10971093 serializeInfo (info);
1098- if (subJson != JSON_PATH_STATE_INFO )
1094+ if (subJson == json_target::all )
10991095 {
11001096 JsonArray effects = lDoc.createNestedArray (F (" effects" ));
11011097 serializeModeNames (effects); // remove WLED-SR extensions from effect names
0 commit comments