35 lines
797 B
C++
35 lines
797 B
C++
#include <string>
|
|
#include <stdexcept>
|
|
#include "settings.h"
|
|
#include "servehelper.h"
|
|
|
|
static bool parse_bool(std::string_view value);
|
|
|
|
|
|
void UserSettings::set(std::string_view key, std::string_view value) {
|
|
if (key == "auto-open-cw") {
|
|
this->auto_open_cw = parse_bool(value);
|
|
}
|
|
}
|
|
|
|
void UserSettings::load_from_cookies(const httplib::Request& req) {
|
|
Cookies cookies = parse_cookies(req);
|
|
|
|
for (auto &[name, value] : cookies) {
|
|
this->set(name, value);
|
|
}
|
|
}
|
|
|
|
|
|
static bool parse_bool(std::string_view value) {
|
|
using namespace std::string_literals;
|
|
|
|
if (value == "true") {
|
|
return true;
|
|
} else if (value == "false") {
|
|
return false;
|
|
} else {
|
|
throw std::invalid_argument("unknown boolean value: "s + std::string(value));
|
|
}
|
|
}
|