/* This file is part of libravatarserv. * Copyright © 2022 tastytea * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "config.hpp" #include "hash.hpp" #include "helpers.hpp" #include "request.hpp" #include "version.hpp" #include #include #include #include int main(int /*argc*/, char * /*argv*/[]) { using namespace libravatarserv; std::cout << "Server: libravatarserv/" << version << '\n'; try { const std::string uri{read_env("REQUEST_URI")}; if (uri.empty()) { std::cout << "Status: 400 Bad Request\n\n"; throw std::runtime_error{"REQUEST_URI is empty"}; } auto cfg{config::read()}; auto req{request::parse(uri)}; if (req.fallback.empty()) { req.fallback = cfg.default_fallback; } const std::string email{hash::find_email(req, cfg.avatar_dir)}; std::cout << " HASH: " << req.hash << "\n SIZE: " << req.size << "\n FALLBACK: " << req.fallback << "\n EMAIL: " << email << '\n'; } catch (const std::runtime_error &e) { if (std::strlen(e.what()) != 0) { std::cerr << "ERROR: " << e.what() << '\n'; } return 1; } return 0; }