driver/saml_http_client.h (28 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License, version 2.0 // (GPLv2), as published by the Free Software Foundation, with the // following additional permissions: // // This program is distributed with certain software that is licensed // under separate terms, as designated in a particular file or component // or in the license documentation. Without limiting your rights under // the GPLv2, the authors of this program hereby grant you an additional // permission to link the program and your derivative works with the // separately licensed software that they have included with the program. // // Without limiting the foregoing grant of rights under the GPLv2 and // additional permission as to separately licensed software, this // program is also subject to the Universal FOSS Exception, version 1.0, // a copy of which can be found along with its FAQ at // http://oss.oracle.com/licenses/universal-foss-exception. // // 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, version 2.0, for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // http://www.gnu.org/licenses/gpl-2.0.html. #ifndef __SAMLHTTPCLIENT_H__ #define __SAMLHTTPCLIENT_H__ #define CPPHTTPLIB_OPENSSL_SUPPORT #include <httplib.h> #include <nlohmann/json.hpp> class SAML_HTTP_EXCEPTION: public std::exception { public: SAML_HTTP_EXCEPTION(const std::string& msg) : m_msg(msg) {}; virtual std::string error_message() const throw() { return this->m_msg; } private: const std::string m_msg; }; class SAML_HTTP_CLIENT { public: SAML_HTTP_CLIENT(std::string host, int connect_timeout, int socket_timeout, bool enable_ssl); ~SAML_HTTP_CLIENT() = default; virtual nlohmann::json post(const std::string& path, const std::string& value, const std::string& content_type); virtual nlohmann::json get(const std::string& path, const httplib::Headers& headers = {}); private: const std::string host; const int connect_timeout; const int socket_timeout; const bool enable_ssl; httplib::Client get_client() const; }; #endif