lunch-rest/main.cpp

82 lines
2.7 KiB
C++
Raw Normal View History

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
}