| 379 | } |
| 380 | |
| 381 | bool VolumioPlugin::preProcessAsyncWebResponse(const char* payload, size_t payloadSize, DynamicJsonDocument& jsonDoc) |
| 382 | { |
| 383 | bool isSuccessful = false; |
| 384 | const size_t FILTER_SIZE = 128U; |
| 385 | StaticJsonDocument<FILTER_SIZE> jsonFilterDoc; |
| 386 | |
| 387 | jsonFilterDoc["artist"] = true; |
| 388 | jsonFilterDoc["duration"] = true; |
| 389 | jsonFilterDoc["seek"] = true; |
| 390 | jsonFilterDoc["service"] = true; |
| 391 | jsonFilterDoc["status"] = true; |
| 392 | jsonFilterDoc["title"] = true; |
| 393 | |
| 394 | if (true == jsonFilterDoc.overflowed()) |
| 395 | { |
| 396 | LOG_ERROR("JSON document size exceeded."); |
| 397 | } |
| 398 | else |
| 399 | { |
| 400 | DeserializationError error = deserializeJson(jsonDoc, payload, payloadSize, DeserializationOption::Filter(jsonFilterDoc)); |
| 401 | |
| 402 | if (DeserializationError::Ok != error.code()) |
| 403 | { |
| 404 | LOG_WARNING("JSON parse error: %s", error.c_str()); |
| 405 | } |
| 406 | else |
| 407 | { |
| 408 | isSuccessful = true; |
| 409 | } |
| 410 | } |
| 411 | |
| 412 | return isSuccessful; |
| 413 | } |
| 414 | |
| 415 | void VolumioPlugin::handleWebResponse(const DynamicJsonDocument& jsonDoc) |
| 416 | { |