1
0
This repository has been archived on 2025-07-27. You can view files and clone it, but cannot push or open issues or pull requests.
Files
siadrive/include/siadrive_api/siacurl.h
2017-04-11 10:47:10 -05:00

60 lines
1.6 KiB
C++

#ifndef _SIACURL_H
#define _SIACURL_H
#include <siacommon.h>
NS_BEGIN(Sia)
NS_BEGIN(Api)
class SIADRIVE_EXPORTABLE CSiaCurl
{
public:
enum class _SiaCurlErrorCode
{
Success,
ServerVersionMismatch,
InvalidRequiredVersion,
NoResponse,
HttpError,
UnknownFailure
};
typedef std::unordered_map<SString, SString> _HttpParameters;
public:
CSiaCurl();
CSiaCurl(const SiaHostConfig& hostConfig);
public:
~CSiaCurl();
private:
Property(SiaHostConfig, HostConfig, public, public)
public:
static SString UrlEncode(const SString& data, const bool& allowSlash = false);
private:
static SString CSiaCurl::GetApiErrorMessage(const SString& result);
private:
std::string ConstructPath(const SString& relativePath) const;
CSiaError<_SiaCurlErrorCode> _Get(const SString& path, const _HttpParameters& parameters, json& response) const;
bool CheckVersion(CSiaError<_SiaCurlErrorCode>& error) const;
CSiaError<_SiaCurlErrorCode> ProcessResponse(const int& res, const int& httpCode, const std::string& result, json& response) const;
public:
SString GetServerVersion() const;
CSiaError<_SiaCurlErrorCode> Get(const SString& path, json& result) const;
CSiaError<_SiaCurlErrorCode> Get(const SString& path, const _HttpParameters& parameters, json& result) const;
CSiaError<_SiaCurlErrorCode> Post(const SString& path, const _HttpParameters& parameters, json& response) const;
};
typedef CSiaCurl::_SiaCurlErrorCode SiaCurlErrorCode;
typedef CSiaError<SiaCurlErrorCode> SiaCurlError;
typedef CSiaCurl::_HttpParameters HttpParameters;
NS_END(2)
#endif //_SIACURL_H