35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
|
#include "parsers.hpp"
|
||
|
#include "../network/network.hpp"
|
||
|
#include "../htmlparser.hpp"
|
||
|
|
||
|
void LunchRest::UDrevakaParser::parse() {
|
||
|
menus.clear();
|
||
|
Request r;
|
||
|
auto html = r.get(_url);
|
||
|
HtmlParser hparse(html);
|
||
|
auto &root = hparse.getRoot();
|
||
|
auto days = root.find("//li[@class='item-day']");
|
||
|
for(auto &day : days) {
|
||
|
Menu m{};
|
||
|
auto meals = day->find("./div[@class='row']");
|
||
|
for(auto meal : meals) {
|
||
|
auto divs = meal->find(".//div/text()");
|
||
|
Meal meal_obj{};
|
||
|
std::string name = dynamic_cast<const xmlpp::ContentNode *>(divs[0])->get_content();;
|
||
|
auto soup_pos = name.find("Polévka");
|
||
|
if(soup_pos != std::string::npos) {
|
||
|
meal_obj.setSoup();
|
||
|
meal_obj.setName(name.substr(10, name.find('(') - 11));
|
||
|
} else {
|
||
|
meal_obj.setName(name.substr(3, name.find('(') - 4));
|
||
|
}
|
||
|
if(divs.size() > 1) {
|
||
|
std::string price = dynamic_cast<const xmlpp::ContentNode *>(divs[1])->get_content();;
|
||
|
meal_obj.setPrice(std::stoi(price));
|
||
|
}
|
||
|
m.addMeal(meal_obj);
|
||
|
}
|
||
|
menus.push_back(m);
|
||
|
}
|
||
|
}
|