2020-09-20 14:27:49 +00:00
|
|
|
#include "../environment.hpp"
|
|
|
|
#include "restaurants.hpp"
|
|
|
|
#include "../network/network.hpp"
|
|
|
|
#include <ctime>
|
|
|
|
#include <rapidjson/document.h>
|
|
|
|
|
|
|
|
LunchRest::SuzziesRestaurant::SuzziesRestaurant() : Restaurant("https://developers.zomato.com/api/v2.1/dailymenu?res_id=18126190", "Suzzie's") {
|
|
|
|
api_key = getEnv("ZOMATO_APIKEY");
|
|
|
|
}
|
|
|
|
|
|
|
|
int weekDay(const std::string &date_str) {
|
|
|
|
struct tm date_tm;
|
|
|
|
strptime(date_str.c_str(), "%Y-%m-%d %H:%M:%S", &date_tm);
|
2020-09-20 14:31:24 +00:00
|
|
|
return (date_tm.tm_wday + 6) % 7;
|
2020-09-20 14:27:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void LunchRest::SuzziesRestaurant::parse() {
|
|
|
|
rapidjson::Document json;
|
|
|
|
Request r;
|
|
|
|
r.addHeader("Accept: application/json");
|
|
|
|
r.addHeader("user_key: " + api_key);
|
|
|
|
json.Parse(r.get(_url).c_str());
|
|
|
|
if( json.HasParseError() )
|
|
|
|
return;
|
|
|
|
const auto &json_menus = json["daily_menus"];
|
|
|
|
if( !json_menus.IsArray() )
|
|
|
|
return;
|
|
|
|
clearMenus();
|
|
|
|
for(size_t i = 0; i < json_menus.Size(); i++) {
|
|
|
|
const auto &menu = json_menus[i]["daily_menu"];
|
|
|
|
auto week_day = weekDay(menu["start_date"].GetString());
|
|
|
|
menus[week_day].setInvalidMenu(false);
|
|
|
|
const auto &meals = menu["dishes"];
|
|
|
|
for(size_t j = 0; j < meals.Size(); j++) {
|
|
|
|
const auto &meal = meals[j]["dish"];
|
|
|
|
if(strlen(meal["price"].GetString()) != 0) {
|
2020-09-20 14:31:24 +00:00
|
|
|
auto price = std::stoi(meal["price"].GetString());
|
|
|
|
menus[week_day].addMeal(price < 100, meal["name"].GetString(), "", price);
|
2020-09-20 14:27:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|