From 3f7a10f82567a0be04a424e0ddc360a73670c9d7 Mon Sep 17 00:00:00 2001 From: Oleg Morozenkov Date: Mon, 27 Jul 2015 20:59:09 +0300 Subject: Documentation --- src/tgbot/net/HttpClient.h | 49 ------------------- src/tgbot/net/HttpParser.h | 68 -------------------------- src/tgbot/net/HttpReqArg.h | 50 ------------------- src/tgbot/net/HttpServer.h | 93 ------------------------------------ src/tgbot/net/TgLongPoll.h | 48 ------------------- src/tgbot/net/TgWebhookLocalServer.h | 47 ------------------ src/tgbot/net/TgWebhookServer.h | 57 ---------------------- src/tgbot/net/TgWebhookTcpServer.h | 46 ------------------ src/tgbot/net/Url.h | 44 ----------------- 9 files changed, 502 deletions(-) delete mode 100644 src/tgbot/net/HttpClient.h delete mode 100644 src/tgbot/net/HttpParser.h delete mode 100644 src/tgbot/net/HttpReqArg.h delete mode 100644 src/tgbot/net/HttpServer.h delete mode 100644 src/tgbot/net/TgLongPoll.h delete mode 100644 src/tgbot/net/TgWebhookLocalServer.h delete mode 100644 src/tgbot/net/TgWebhookServer.h delete mode 100644 src/tgbot/net/TgWebhookTcpServer.h delete mode 100644 src/tgbot/net/Url.h (limited to 'src/tgbot/net') diff --git a/src/tgbot/net/HttpClient.h b/src/tgbot/net/HttpClient.h deleted file mode 100644 index 4b84dc3..0000000 --- a/src/tgbot/net/HttpClient.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_HTTPCLIENT_H -#define TGBOT_HTTPCLIENT_H - -#include - -#include - -#include "tgbot/net/Url.h" -#include "tgbot/net/HttpReqArg.h" -#include "tgbot/net/HttpParser.h" - -namespace TgBot { - -class HttpClient { - -public: - static HttpClient& getInstance(); - - std::string makeRequest(const Url& url, const std::vector& args); - -private: - boost::asio::io_service _ioService; -}; - -} - -#endif //TGBOT_HTTPCLIENT_H diff --git a/src/tgbot/net/HttpParser.h b/src/tgbot/net/HttpParser.h deleted file mode 100644 index dcb857b..0000000 --- a/src/tgbot/net/HttpParser.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_HTTPPARSER_H -#define TGBOT_HTTPPARSER_H - -#include -#include - -#include "tgbot/net/Url.h" -#include "tgbot/net/HttpReqArg.h" - -namespace TgBot { - -class HttpParser { - -public: - static HttpParser& getInstance(); - - std::string generateRequest(const Url& url, const std::vector& args, bool isKeepAlive = false); - std::string generateMultipartFormData(const std::vector& args, const std::string& bondary); - std::string generateMultipartBoundary(const std::vector& args); - std::string generateWwwFormUrlencoded(const std::vector& args); - std::string generateResponse(const std::string& data, const std::string& mimeType = "text/plain", short unsigned statusCode = 200, const std::string& statusStr = "OK", bool isKeepAlive = false); - - inline std::string parseRequest(const std::string& data, std::map& headers) { - return parseHttp(true, data, headers); - } - - inline std::string parseRequest(const std::string& data) { - return parseHttp(true, data); - } - - inline std::string parseResponse(const std::string& data, std::map& headers) { - return parseHttp(false, data, headers); - } - - inline std::string parseResponse(const std::string& data) { - return parseHttp(false, data); - } - -private: - std::string parseHttp(bool isRequest, const std::string& data, std::map& headers); - std::string parseHttp(bool isRequest, const std::string& data); -}; - -} - -#endif //TGBOT_HTTPPARSER_H diff --git a/src/tgbot/net/HttpReqArg.h b/src/tgbot/net/HttpReqArg.h deleted file mode 100644 index e906e94..0000000 --- a/src/tgbot/net/HttpReqArg.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_HTTPPARAMETER_H -#define TGBOT_HTTPPARAMETER_H - -#include - -#include - -namespace TgBot { - -class HttpReqArg { - -public: - template - HttpReqArg(const std::string& name, const T& value, bool isFile = false, const std::string& mimeType = "text/plain") : - name(name), value(boost::lexical_cast(value)), isFile(isFile), mimeType(mimeType) - { - } - - std::string name; - std::string value; - bool isFile = false; - std::string mimeType; -}; - -} - - -#endif //TGBOT_HTTPPARAMETER_H diff --git a/src/tgbot/net/HttpServer.h b/src/tgbot/net/HttpServer.h deleted file mode 100644 index 92a667a..0000000 --- a/src/tgbot/net/HttpServer.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_HTTPSERVER_H -#define TGBOT_HTTPSERVER_H - -#include - -#include - -#include "tgbot/net/HttpParser.h" - -namespace TgBot { - -template -class HttpServer { - -private: - class Connection; - -public: - typedef std::function)> ServerHandler; - - HttpServer(std::shared_ptr>& acceptor, const ServerHandler& handler) : _acceptor(acceptor), _handler(handler) { - } - - void start() { - std::shared_ptr> socket(new boost::asio::basic_stream_socket(acceptor->get_io_service())); - std::shared_ptr> connection(new Connection(socket, _handler)); - acceptor->async_accept(*connection->socket, [this, connection]() { - connection->start(); - start(); - }); - _ioService.run(); - } - - void stop() { - _ioService.stop(); - } - -private: - template - class Connection { - - public: - Connection(std::shared_ptr>& socket, const ServerHandler& handler) : socket(socket), _handler(handler) { - boost::asio::socket_base::keep_alive option(true); - socket.set_option(option); - } - - void start() { - data.reserve(10240); - socket->async_receive(data, [this]() { - std::map headers; - std::string body = HttpParser::parseResponse(data, headers); - socket->async_send(_handler(body, headers)); - }); - } - - std::shared_ptr> socket; - std::string data; - - private: - const ServerHandler _handler; - }; - - boost::asio::io_service _ioService; - std::shared_ptr> _acceptor; - const ServerHandler _handler; -}; - -} - -#endif //TGBOT_HTTPSERVER_H diff --git a/src/tgbot/net/TgLongPoll.h b/src/tgbot/net/TgLongPoll.h deleted file mode 100644 index 6c5175e..0000000 --- a/src/tgbot/net/TgLongPoll.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_TGLONGPOLL_H -#define TGBOT_TGLONGPOLL_H - -#include "tgbot/Bot.h" -#include "tgbot/Api.h" -#include "tgbot/EventHandler.h" - -namespace TgBot { - -class TgLongPoll { - -public: - TgLongPoll(const Api* api, const EventHandler* eventHandler); - TgLongPoll(const Bot& bot); - - void start(); - -private: - int32_t _lastUpdateId = 0; - const Api* _api; - const EventHandler* _eventHandler; -}; - -} - -#endif //TGBOT_TGLONGPOLL_H diff --git a/src/tgbot/net/TgWebhookLocalServer.h b/src/tgbot/net/TgWebhookLocalServer.h deleted file mode 100644 index ec99ad7..0000000 --- a/src/tgbot/net/TgWebhookLocalServer.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_TGWEBHOOKTCPSERVER_H -#define TGBOT_TGWEBHOOKTCPSERVER_H - -#include "tgbot/net/TgWebhookServer.h" - -namespace TgBot { - -class TgWebhookLocalServer : public TgWebhookServer { - -public: - TgWebhookLocalServer(std::shared_ptr>& acceptor, const std::string& path, EventHandler* eventHandler) = delete; - - TgWebhookLocalServer(const std::string& path, const EventHandler* eventHandler) : - TgWebhookServer(std::shared_ptr>(new boost::asio::local::stream_protocol::acceptor(_ioService, boost::asio::local::stream_protocol::endpoint(path))), path, eventHandler) - { - } - - TgWebhookLocalServer(const std::string& path, const Bot& bot) : TgWebhookLocalServer(path, &bot.getEventHandler()) { - - } -}; - -} - -#endif //TGBOT_TGWEBHOOKTCPSERVER_H diff --git a/src/tgbot/net/TgWebhookServer.h b/src/tgbot/net/TgWebhookServer.h deleted file mode 100644 index a8155ff..0000000 --- a/src/tgbot/net/TgWebhookServer.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_TGHTTPSERVER_H -#define TGBOT_TGHTTPSERVER_H - -#include "tgbot/Bot.h" -#include "tgbot/EventHandler.h" -#include "tgbot/TgTypeParser.h" -#include "tgbot/net/HttpServer.h" - -namespace TgBot { - -template -class TgWebhookServer : public HttpServer { - -public: - TgWebhookServer(std::shared_ptr>& acceptor, const ServerHandler& handler) = delete; - - TgWebhookServer(std::shared_ptr>& acceptor, const std::string& path, const EventHandler* eventHandler) : - HttpServer(acceptor, [this, eventHandler, &path](const std::string& data, const std::map& headers) -> std::string { - if (headers["method"] == "POST" && headers["path"] == path) { - eventHandler->handleUpdate(TgTypeParser::getInstance().parseUpdate(TgTypeParser::getInstance().parseJson(data))); - } - return HttpParser::generateResponse(""); - }) - { - } - - TgWebhookServer(std::shared_ptr>& acceptor, const std::string& path, const Bot& bot) : - TgWebhookServer(acceptor, path, &bot.getEventHandler()) - { - } -}; - -} - -#endif //TGBOT_TGHTTPSERVER_H diff --git a/src/tgbot/net/TgWebhookTcpServer.h b/src/tgbot/net/TgWebhookTcpServer.h deleted file mode 100644 index 4dc58e1..0000000 --- a/src/tgbot/net/TgWebhookTcpServer.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_TGWEBHOOKTCPSERVER_H -#define TGBOT_TGWEBHOOKTCPSERVER_H - -#include "tgbot/net/TgWebhookServer.h" - -namespace TgBot { - -class TgWebhookTcpServer : public TgWebhookServer { - -public: - TgWebhookTcpServer(std::shared_ptr>& acceptor, const std::string& path, EventHandler* eventHandler) = delete; - - TgWebhookTcpServer(unsigned short port, const std::string& path, const EventHandler* eventHandler) : - TgWebhookServer(std::shared_ptr>(new boost::asio::ip::tcp::acceptor(_ioService, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port))), path, eventHandler) - { - } - - TgWebhookTcpServer(const std::string& path, const Bot& bot) : TgWebhookTcpServer(path, &bot.getEventHandler()) { - } -}; - -} - -#endif //TGBOT_TGWEBHOOKTCPSERVER_H diff --git a/src/tgbot/net/Url.h b/src/tgbot/net/Url.h deleted file mode 100644 index 39ae348..0000000 --- a/src/tgbot/net/Url.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_CPP_URL_H -#define TGBOT_CPP_URL_H - -#include - -namespace TgBot { - -class Url { - -public: - Url(const std::string& url); - - std::string protocol; - std::string host; - std::string path; - std::string query; - std::string fragment; -}; - -} - -#endif //TGBOT_CPP_URL_H -- cgit v1.2.3