Added support for passing exceptions
This commit is contained in:
parent
f91220c715
commit
bbdcf70efd
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required (VERSION 3.7)
|
cmake_minimum_required (VERSION 3.7)
|
||||||
project (mastodon-cpp
|
project (mastodon-cpp
|
||||||
VERSION 0.8.7
|
VERSION 0.8.8
|
||||||
LANGUAGES CXX
|
LANGUAGES CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
11
src/http.cpp
11
src/http.cpp
|
@ -18,6 +18,7 @@
|
||||||
#include <functional> // std::bind
|
#include <functional> // std::bind
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <cstring> // std::strncmp
|
#include <cstring> // std::strncmp
|
||||||
|
#include <exception>
|
||||||
#include <curlpp/Options.hpp>
|
#include <curlpp/Options.hpp>
|
||||||
#include <curlpp/Exception.hpp>
|
#include <curlpp/Exception.hpp>
|
||||||
#include <curlpp/Infos.hpp>
|
#include <curlpp/Infos.hpp>
|
||||||
|
@ -136,6 +137,11 @@ const uint_fast16_t API::http::request(const method &meth,
|
||||||
}
|
}
|
||||||
catch (curlpp::RuntimeError &e)
|
catch (curlpp::RuntimeError &e)
|
||||||
{
|
{
|
||||||
|
if (parent.exceptions())
|
||||||
|
{
|
||||||
|
std::rethrow_exception(std::current_exception());
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: There has to be a better way
|
// FIXME: There has to be a better way
|
||||||
if (std::strncmp(e.what(),
|
if (std::strncmp(e.what(),
|
||||||
"Failed writing body", 19) == 0)
|
"Failed writing body", 19) == 0)
|
||||||
|
@ -186,6 +192,11 @@ const uint_fast16_t API::http::request(const method &meth,
|
||||||
}
|
}
|
||||||
catch (curlpp::LogicError &e)
|
catch (curlpp::LogicError &e)
|
||||||
{
|
{
|
||||||
|
if (parent.exceptions())
|
||||||
|
{
|
||||||
|
std::rethrow_exception(std::current_exception());
|
||||||
|
}
|
||||||
|
|
||||||
cerr << "LOGIC ERROR: " << e.what() << std::endl;
|
cerr << "LOGIC ERROR: " << e.what() << std::endl;
|
||||||
return 0xffff;
|
return 0xffff;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ API::API(const string &instance, const string &access_token)
|
||||||
, _access_token(access_token)
|
, _access_token(access_token)
|
||||||
, _useragent(string("mastodon-cpp/") + global::version)
|
, _useragent(string("mastodon-cpp/") + global::version)
|
||||||
, _http(*this, instance, access_token)
|
, _http(*this, instance, access_token)
|
||||||
|
, _exceptions(false)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -255,3 +256,14 @@ const string API::get_header(const std::string &header) const
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool API::exceptions(const bool &value)
|
||||||
|
{
|
||||||
|
_exceptions = value;
|
||||||
|
return _exceptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool API::exceptions() const
|
||||||
|
{
|
||||||
|
return _exceptions;
|
||||||
|
}
|
||||||
|
|
|
@ -351,6 +351,23 @@ public:
|
||||||
*/
|
*/
|
||||||
const string get_header(const string &header) const;
|
const string get_header(const string &header) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Turn exceptions on or off. Defaults to off.
|
||||||
|
*
|
||||||
|
* This applies to exceptions from curlpp. curlpp::RuntimeError and
|
||||||
|
* curlpp::LogicError.
|
||||||
|
*
|
||||||
|
* @param value true for on, false for off
|
||||||
|
*
|
||||||
|
* @return true if exceptions are turned on, false otherwise
|
||||||
|
*/
|
||||||
|
bool exceptions(const bool &value);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Returns true if exceptions are turned on, false otherwise
|
||||||
|
*/
|
||||||
|
const bool exceptions() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Make a GET request which doesn't require parameters.
|
* @brief Make a GET request which doesn't require parameters.
|
||||||
*
|
*
|
||||||
|
@ -662,6 +679,7 @@ private:
|
||||||
string _access_token;
|
string _access_token;
|
||||||
string _useragent;
|
string _useragent;
|
||||||
http _http;
|
http _http;
|
||||||
|
bool _exceptions;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Converts map of parameters into a string.
|
* @brief Converts map of parameters into a string.
|
||||||
|
|
Reference in New Issue