/* This file is part of expandurl-mastodon. * Copyright © 2018 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 . */ #ifndef EXPANDURL_MASTODON_HPP #define EXPANDURL_MASTODON_HPP #include #include #include #include #include #include #include using std::string; using Mastodon::API; using Mastodon::Easy; void signal_handler(int signum); /*! * @brief Extract URLs from HTML * * @return vector of URLs */ const std::vector get_urls(const string &html); /*! * @brief Expands shortened URLs * * @param url URL to expand * * @return Expanded URL */ const string expand(const string &url); /*! * @brief Filters out tracking stuff * * Currently removes all arguments beginning with `utm_` * * @param url URL to filter * * @return Filtered URL */ const string strip(const string &url); class Listener { public: Listener(); /*! * @brief Starts listening on Mastodon */ const void start(); /*! * @brief Stops listening on Mastodon */ const void stop(); std::vector get_new_messages(); Easy::Status get_status(const std::uint_fast64_t &id); const bool send_reply(const Easy::Status &to_status, const string &message); const std::uint_fast64_t get_parent_id(Easy::Notification ¬if); const bool stillrunning() const; private: string _instance; string _access_token; std::unique_ptr _masto; string _stream; std::unique_ptr _ptr; std::thread _thread; bool _running; }; #endif // EXPANDURL_MASTODON_HPP