2020-09-14 22:55:03 +00:00
|
|
|
#include "parser.hpp"
|
|
|
|
#include "menu.hpp"
|
|
|
|
#include "meal.hpp"
|
|
|
|
#include "parsers/parsers.hpp"
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <memory>
|
2020-09-14 23:30:34 +00:00
|
|
|
#include <restbed>
|
|
|
|
#include <sstream>
|
2020-09-14 22:55:03 +00:00
|
|
|
|
|
|
|
std::vector<std::string> days = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"};
|
2020-09-14 23:30:34 +00:00
|
|
|
std::vector<std::unique_ptr<LunchRest::Parser>> parsers;
|
2020-09-14 22:55:03 +00:00
|
|
|
|
2020-09-14 23:30:34 +00:00
|
|
|
/*int main() {
|
2020-09-14 22:55:03 +00:00
|
|
|
std::vector<std::unique_ptr<LunchRest::Parser>> 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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-09-14 23:30:34 +00:00
|
|
|
}*/
|
|
|
|
|
|
|
|
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;
|
2020-09-14 22:55:03 +00:00
|
|
|
}
|