/* This file is part of FediBlock-backend. * Copyright © 2020, 2021 tastytea * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef FEDIBLOCK_BACKEND_CGI_HPP #define FEDIBLOCK_BACKEND_CGI_HPP #include "types.hpp" #include #include #include #include #include namespace FediBlock::cgi { using std::string; using std::string_view; using std::vector; // Read form data from QUERY_STRING or stdin and return it as an object. [[nodiscard]] entry_type parse_formdata(); // Split a string at commas, return a vector. [[nodiscard]] vector string_to_vector(string_view str); /*! * @brief Read tags from QUERY_STRING or stdin and return it as a vector. * * For use in rss.cpp. * * @since 0.1.0 */ [[nodiscard]] vector get_tags(); // Return str in lowercase. [[nodiscard]] string tolower(string_view str); // Replace certain characters with HTML tags or entities. string text2html(string text); // Check if the answer matches the solution we have for the id. bool captcha_valid(std::uint8_t id, string_view answer); } // namespace FediBlock::cgi class SpamException : public std::exception { public: // NOLINTNEXTLINE(modernize-use-nodiscard) const char *what() const noexcept override; }; class CaptchaException : public std::exception { public: // NOLINTNEXTLINE(modernize-use-nodiscard) const char *what() const noexcept override; }; #endif // FEDIBLOCK_BACKEND_CGI_HPP