REST, baby!
This commit is contained in:
parent
b3ab05c40c
commit
0349b3a300
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
CXX ?= g++
|
CXX ?= g++
|
||||||
CFLAGS ?= -O2 -Wall -Wextra `pkg-config libxml-2.0 --cflags` `pkg-config libxml++-3.0 --cflags`
|
CFLAGS ?= -O2 -Wall -Wextra `pkg-config libxml-2.0 --cflags` `pkg-config libxml++-3.0 --cflags`
|
||||||
PREFIX ?= /usr/local/bin
|
PREFIX ?= /usr/local/bin
|
||||||
LDFLAGS ?= -lcurl `pkg-config libxml-2.0 --libs` `pkg-config libxml++-3.0 --libs`
|
LDFLAGS ?= -lcurl -lrestbed `pkg-config libxml-2.0 --libs` `pkg-config libxml++-3.0 --libs`
|
||||||
|
|
||||||
PARSERS = udrevaka.o padagali.o lightofindia.o ukarla.o
|
PARSERS = udrevaka.o padagali.o lightofindia.o ukarla.o
|
||||||
|
|
||||||
|
49
main.cpp
49
main.cpp
@ -5,10 +5,13 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <restbed>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
std::vector<std::string> days = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"};
|
std::vector<std::string> days = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"};
|
||||||
|
std::vector<std::unique_ptr<LunchRest::Parser>> parsers;
|
||||||
|
|
||||||
int main() {
|
/*int main() {
|
||||||
std::vector<std::unique_ptr<LunchRest::Parser>> parsers;
|
std::vector<std::unique_ptr<LunchRest::Parser>> parsers;
|
||||||
parsers.emplace_back(new LunchRest::UDrevakaParser());
|
parsers.emplace_back(new LunchRest::UDrevakaParser());
|
||||||
parsers.emplace_back(new LunchRest::PadagaliParser());
|
parsers.emplace_back(new LunchRest::PadagaliParser());
|
||||||
@ -31,4 +34,48 @@ int main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
7
meal.cpp
7
meal.cpp
@ -1,4 +1,5 @@
|
|||||||
#include "meal.hpp"
|
#include "meal.hpp"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &os, const LunchRest::Meal &meal) {
|
std::ostream &operator<<(std::ostream &os, const LunchRest::Meal &meal) {
|
||||||
if(meal.isSoup())
|
if(meal.isSoup())
|
||||||
@ -10,3 +11,9 @@ std::ostream &operator<<(std::ostream &os, const LunchRest::Meal &meal) {
|
|||||||
os << ", " << meal.getPrice() << " czk";
|
os << ", " << meal.getPrice() << " czk";
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string LunchRest::Meal::jsonify() const {
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << "{\"name\": \"" << _name << "\", \"description\": \"" << _desc << "\", \"isSoup\": " << (_isSoup ? "true" : "false") << ", \"price\": " << _price << "}";
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
1
meal.hpp
1
meal.hpp
@ -35,6 +35,7 @@ public:
|
|||||||
void setDesc(const std::string &desc) {
|
void setDesc(const std::string &desc) {
|
||||||
_desc = desc;
|
_desc = desc;
|
||||||
}
|
}
|
||||||
|
std::string jsonify() const;
|
||||||
private:
|
private:
|
||||||
bool _isSoup = false;
|
bool _isSoup = false;
|
||||||
std::string _name;
|
std::string _name;
|
||||||
|
15
menu.cpp
15
menu.cpp
@ -1,4 +1,5 @@
|
|||||||
#include "menu.hpp"
|
#include "menu.hpp"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
void LunchRest::Menu::addMeal(bool soup, const std::string &name, const std::string &desc, int price) {
|
void LunchRest::Menu::addMeal(bool soup, const std::string &name, const std::string &desc, int price) {
|
||||||
_meals.emplace_back(soup, name, desc, price);
|
_meals.emplace_back(soup, name, desc, price);
|
||||||
@ -52,3 +53,17 @@ void LunchRest::Menu::setInvalidMenu() {
|
|||||||
bool LunchRest::Menu::isValid() const {
|
bool LunchRest::Menu::isValid() const {
|
||||||
return _valid;
|
return _valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string LunchRest::Menu::jsonify() const {
|
||||||
|
std::stringstream ss{};
|
||||||
|
ss << "[";
|
||||||
|
auto soupInd = getSoupIndex();
|
||||||
|
ss << getMeals()[soupInd].jsonify() << ",";
|
||||||
|
for(unsigned long int i = 0; i < getMeals().size(); i++) {
|
||||||
|
if(i != soupInd)
|
||||||
|
ss << getMeals()[i].jsonify() << ",";
|
||||||
|
}
|
||||||
|
ss.seekp(-1, ss.cur);
|
||||||
|
ss << "]";
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
1
menu.hpp
1
menu.hpp
@ -21,6 +21,7 @@ public:
|
|||||||
unsigned long int getSoupIndex() const;
|
unsigned long int getSoupIndex() const;
|
||||||
void setInvalidMenu();
|
void setInvalidMenu();
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
std::string jsonify() const;
|
||||||
private:
|
private:
|
||||||
std::vector<Meal> _meals;
|
std::vector<Meal> _meals;
|
||||||
bool _valid = true;
|
bool _valid = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user