| 109 | } |
| 110 | |
| 111 | static std::vector<EffectsGroup> parseProductPages(const rapidjson::Document& doc) { |
| 112 | if (!doc.HasMember("data") || |
| 113 | !doc["data"].HasMember("product_pages_configuration") || |
| 114 | !doc["data"]["product_pages_configuration"].HasMember("audacityPageSections")) { |
| 115 | assert(false); |
| 116 | return {}; |
| 117 | } |
| 118 | |
| 119 | std::vector<EffectsGroup> pages; |
| 120 | |
| 121 | const rapidjson::Value& sections = doc["data"]["product_pages_configuration"]["audacityPageSections"]; |
| 122 | |
| 123 | for (rapidjson::SizeType i = 0; i < sections.Size(); i++) { |
| 124 | auto group = parseEffectGroup(sections[i]); |
| 125 | if (group && !group->effects.empty()) |
| 126 | pages.push_back(*group); |
| 127 | } |
| 128 | |
| 129 | return pages; |
| 130 | } |
| 131 | |
| 132 | void GetEffects(std::function<void(std::vector<EffectsGroup>)> callback) |
| 133 | { |
no test coverage detected