#include "parser.hpp" #include "menu.hpp" #include "meal.hpp" #include "parsers/parsers.hpp" #include #include #include #include std::vector days = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"}; std::vector> parsers; /*int main() { std::vector> parsers; parsers.emplace_back(new LunchRest::UDrevakaParser()); parsers.emplace_back(new LunchRest::PadagaliParser()); parsers.emplace_back(new LunchRest::LightOfIndiaParser()); parsers.emplace_back(new LunchRest::UKarlaParser()); // add parsers here for(auto &x : parsers) { x->parse(); std::cout << "RESTAURANT " << x->getRestaurant() << std::endl; for(unsigned long int i = 0; i < x->getMenus().size(); i++) { auto y = x->getMenus()[i]; if(y.isValid()) { std::cout << days[i] << std::endl; auto soupInd = y.getSoupIndex(); std::cout << "\t" << y.getMeals()[soupInd] << std::endl; for(unsigned long int i = 0; i < y.getMeals().size(); i++) { if(i != soupInd) std::cout << "\t" << y.getMeals()[i] << std::endl; } } } } }*/ void get_all( const std::shared_ptr< restbed::Session > session ) { std::stringstream ss{}; ss << "["; for(auto &x : parsers) { ss << "{\"restaurant\": \"" << x->getRestaurant() << "\", \"menus\": ["; for(const auto &y : x->getMenus()) { if(y.isValid()) { ss << y.jsonify() << ","; } } ss.seekp(-1, ss.cur); ss << "]},"; } ss.seekp(-1, ss.cur); ss << "]"; auto res = ss.str(); session->close(restbed::OK, res, { { "Content-Length", std::to_string(res.length()) } }); } int main() { parsers.emplace_back(new LunchRest::UDrevakaParser()); parsers.emplace_back(new LunchRest::PadagaliParser()); parsers.emplace_back(new LunchRest::LightOfIndiaParser()); parsers.emplace_back(new LunchRest::UKarlaParser()); std::cout << "Initial parsing" << std::endl; for(auto &x : parsers) x->parse(); std::cout << "Finished parsing" << std::endl; auto resource = std::make_shared< restbed::Resource >(); resource->set_path("/get_all"); resource->set_method_handler( "GET", get_all ); auto settings = std::make_shared< restbed::Settings >(); settings->set_port(1984); settings->set_default_header( "Connection", "close" ); restbed::Service service; service.publish(resource); service.start(settings); return 0; }