Change api error structure
This commit is contained in:
@@ -43,10 +43,11 @@ protected:
|
|||||||
class SIADRIVE_EXPORTABLE CSiaApi
|
class SIADRIVE_EXPORTABLE CSiaApi
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class _SiaApiError
|
enum class _SiaApiErrorCode
|
||||||
{
|
{
|
||||||
Success,
|
Success,
|
||||||
NotImplemented,
|
NotImplemented,
|
||||||
|
NotConnected,
|
||||||
RequestError,
|
RequestError,
|
||||||
WalletExists,
|
WalletExists,
|
||||||
WalletLocked,
|
WalletLocked,
|
||||||
@@ -133,10 +134,10 @@ public:
|
|||||||
virtual void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
virtual void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
_SiaApiError Create(const _SiaSeedLanguage& seedLanguage, SString& seed);
|
CSiaError<_SiaApiErrorCode> Create(const _SiaSeedLanguage& seedLanguage, SString& seed);
|
||||||
_SiaApiError Restore(const SString& seed);
|
CSiaError<_SiaApiErrorCode> Restore(const SString& seed);
|
||||||
_SiaApiError Lock();
|
CSiaError<_SiaApiErrorCode> Lock();
|
||||||
_SiaApiError Unlock(const SString& password);
|
CSiaError<_SiaApiErrorCode> Unlock(const SString& password);
|
||||||
};
|
};
|
||||||
|
|
||||||
class SIADRIVE_EXPORTABLE _CSiaRenter :
|
class SIADRIVE_EXPORTABLE _CSiaRenter :
|
||||||
@@ -176,12 +177,12 @@ public:
|
|||||||
void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
_SiaApiError FileExists(const SString& siaPath, bool& exists) const;
|
CSiaError<_SiaApiErrorCode> FileExists(const SString& siaPath, bool& exists) const;
|
||||||
_SiaApiError DownloadFile(const SString& siaPath, const SString& location) const;
|
CSiaError<_SiaApiErrorCode> DownloadFile(const SString& siaPath, const SString& location) const;
|
||||||
_SiaApiError GetFileTree(std::shared_ptr<_CSiaFileTree>& siaFileTree) const;
|
CSiaError<_SiaApiErrorCode> GetFileTree(std::shared_ptr<_CSiaFileTree>& siaFileTree) const;
|
||||||
_SiaRenterAllowance GetAllowance() const;
|
_SiaRenterAllowance GetAllowance() const;
|
||||||
_SiaApiError SetAllowance(const _SiaRenterAllowance& renterAllowance);
|
CSiaError<_SiaApiErrorCode> SetAllowance(const _SiaRenterAllowance& renterAllowance);
|
||||||
_SiaApiError RefreshFileTree( );
|
CSiaError<_SiaApiErrorCode> RefreshFileTree( );
|
||||||
};
|
};
|
||||||
|
|
||||||
class SIADRIVE_EXPORTABLE _CSiaConsensus :
|
class SIADRIVE_EXPORTABLE _CSiaConsensus :
|
||||||
@@ -233,7 +234,8 @@ public:
|
|||||||
SiaHostConfig GetHostConfig() const;
|
SiaHostConfig GetHostConfig() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef CSiaApi::_SiaApiError SiaApiError;
|
typedef CSiaApi::_SiaApiErrorCode SiaApiErrorCode;
|
||||||
|
typedef CSiaError<SiaApiErrorCode> SiaApiError;
|
||||||
typedef CSiaApi::_SiaSeedLanguage SiaSeedLanguage;
|
typedef CSiaApi::_SiaSeedLanguage SiaSeedLanguage;
|
||||||
typedef CSiaApi::_CSiaWallet CSiaWallet;
|
typedef CSiaApi::_CSiaWallet CSiaWallet;
|
||||||
typedef CSiaApi::_CSiaRenter CSiaRenter;
|
typedef CSiaApi::_CSiaRenter CSiaRenter;
|
||||||
|
@@ -98,6 +98,36 @@ get_access:\
|
|||||||
set_access:\
|
set_access:\
|
||||||
type Set##name(const type& value) { json_doc[#name] = value; return value; }
|
type Set##name(const type& value) { json_doc[#name] = value; return value; }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
class CSiaError
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CSiaError()
|
||||||
|
{
|
||||||
|
SetCode(T::Success);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSiaError(const T& t)
|
||||||
|
{
|
||||||
|
SetCode(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSiaError(const T& code, const SString& reason)
|
||||||
|
{
|
||||||
|
SetCode(code);
|
||||||
|
SetReason(reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
Property(T, Code, public, private)
|
||||||
|
Property(SString, Reason, public, private)
|
||||||
|
|
||||||
|
public:
|
||||||
|
operator bool() { return GetCode() == T::Success; }
|
||||||
|
operator bool() const { return GetCode() == T::Success; }
|
||||||
|
CSiaError& operator=(const T& code) { SetCode(code); return *this; }
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
SString HostName;
|
SString HostName;
|
||||||
@@ -107,7 +137,7 @@ typedef struct
|
|||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline bool ApiSuccess(const T& t) {
|
inline bool ApiSuccess(const T& t) {
|
||||||
return t == T::Success;
|
return static_cast<bool>(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef ttmath::UInt<256> Hastings;
|
typedef ttmath::UInt<256> Hastings;
|
||||||
|
@@ -9,7 +9,7 @@ NS_BEGIN(Api)
|
|||||||
class SIADRIVE_EXPORTABLE CSiaCurl
|
class SIADRIVE_EXPORTABLE CSiaCurl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class _SiaCurlError
|
enum class _SiaCurlErrorCode
|
||||||
{
|
{
|
||||||
Success,
|
Success,
|
||||||
ServerVersionMismatch,
|
ServerVersionMismatch,
|
||||||
@@ -36,23 +36,23 @@ public:
|
|||||||
static SString UrlEncode(const SString& data, const bool& allowSlash = false);
|
static SString UrlEncode(const SString& data, const bool& allowSlash = false);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static _SiaCurlError CheckApiError(const json& result);
|
static SString CSiaCurl::GetApiErrorMessage(const json& result);
|
||||||
static _SiaCurlError CheckHttpError(const std::string& result);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string ConstructPath(const SString& relativePath) const;
|
std::string ConstructPath(const SString& relativePath) const;
|
||||||
_SiaCurlError _Get(const SString& path, const _HttpParameters& parameters, json& response) const;
|
CSiaError<_SiaCurlErrorCode> _Get(const SString& path, const _HttpParameters& parameters, json& response) const;
|
||||||
bool CheckVersion(_SiaCurlError& error) const;
|
bool CheckVersion(CSiaError<_SiaCurlErrorCode>& error) const;
|
||||||
_SiaCurlError ProcessResponse(const int& res, const int& httpCode, const std::string& result, json& response) const;
|
CSiaError<_SiaCurlErrorCode> ProcessResponse(const int& res, const int& httpCode, const std::string& result, json& response) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SString GetServerVersion() const;
|
SString GetServerVersion() const;
|
||||||
_SiaCurlError Get(const SString& path, json& result) const;
|
CSiaError<_SiaCurlErrorCode> Get(const SString& path, json& result) const;
|
||||||
_SiaCurlError Get(const SString& path, const _HttpParameters& parameters, json& result) const;
|
CSiaError<_SiaCurlErrorCode> Get(const SString& path, const _HttpParameters& parameters, json& result) const;
|
||||||
_SiaCurlError Post(const SString& path, const _HttpParameters& parameters, json& response) const;
|
CSiaError<_SiaCurlErrorCode> Post(const SString& path, const _HttpParameters& parameters, json& response) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef CSiaCurl::_SiaCurlError SiaCurlError;
|
typedef CSiaCurl::_SiaCurlErrorCode SiaCurlErrorCode;
|
||||||
|
typedef CSiaError<SiaCurlErrorCode> SiaCurlError;
|
||||||
typedef CSiaCurl::_HttpParameters HttpParameters;
|
typedef CSiaCurl::_HttpParameters HttpParameters;
|
||||||
|
|
||||||
NS_END(2)
|
NS_END(2)
|
||||||
|
@@ -26,7 +26,7 @@ public:
|
|||||||
Error
|
Error
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class _UploadError
|
enum class _UploadErrorCode
|
||||||
{
|
{
|
||||||
Success,
|
Success,
|
||||||
SourceFileNotFound,
|
SourceFileNotFound,
|
||||||
@@ -68,12 +68,13 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
_UploadStatus GetUploadStatus(const SString& siaPath);
|
_UploadStatus GetUploadStatus(const SString& siaPath);
|
||||||
_UploadError AddOrUpdate(const SString& siaPath, SString filePath);
|
CSiaError<_UploadErrorCode> AddOrUpdate(const SString& siaPath, SString filePath);
|
||||||
_UploadError Remove(const SString& siaPath);
|
CSiaError<_UploadErrorCode> Remove(const SString& siaPath);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Sia::Api::CUploadManager::_UploadStatus UploadStatus;
|
typedef CUploadManager::_UploadStatus UploadStatus;
|
||||||
typedef Sia::Api::CUploadManager::_UploadError UploadError;
|
typedef CUploadManager::_UploadErrorCode UploadErrorCode;
|
||||||
|
typedef CSiaError<CUploadManager::_UploadErrorCode> UploadError;
|
||||||
|
|
||||||
// Event Notifications
|
// Event Notifications
|
||||||
class CreatingTemporarySiaDriveFile :
|
class CreatingTemporarySiaDriveFile :
|
||||||
@@ -388,7 +389,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
const SString _siaPath;
|
const SString _siaPath;
|
||||||
const SString _filePath;
|
const SString _filePath;
|
||||||
const SiaCurlError _curlError = SiaCurlError::Success;
|
const SiaCurlError _curlError;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual SString GetSingleLineMessage() const override
|
virtual SString GetSingleLineMessage() const override
|
||||||
|
@@ -35,21 +35,13 @@ SString CSiaCurl::UrlEncode(const SString& data, const bool& allowSlash)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SiaCurlError CSiaCurl::CheckApiError(const json& result)
|
SString CSiaCurl::GetApiErrorMessage(const json& result)
|
||||||
{
|
{
|
||||||
SiaCurlError ret = SiaCurlError::Success;
|
|
||||||
|
SString ret;
|
||||||
if (result.find("message") != result.end())
|
if (result.find("message") != result.end())
|
||||||
{
|
{
|
||||||
ret = SiaCurlError::UnknownFailure;
|
ret = result["message"].get<std::string>();
|
||||||
|
|
||||||
const std::string msg = result["message"].get<std::string>();
|
|
||||||
if ((msg.length() >= 3))
|
|
||||||
{
|
|
||||||
if ((msg.substr(0, 3) == "404"))
|
|
||||||
{
|
|
||||||
ret = SiaCurlError::HttpError;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -61,40 +53,29 @@ std::string CSiaCurl::ConstructPath(const SString& relativePath) const
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SiaCurlError CSiaCurl::CheckHttpError(const std::string& result)
|
|
||||||
{
|
|
||||||
if (result.length() && ((result.length() < 2) || (result[0] != '{')))
|
|
||||||
{
|
|
||||||
return SiaCurlError::HttpError;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SiaCurlError::Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
SiaCurlError CSiaCurl::ProcessResponse(const int& res, const int& httpCode, const std::string& result, json& response) const
|
SiaCurlError CSiaCurl::ProcessResponse(const int& res, const int& httpCode, const std::string& result, json& response) const
|
||||||
{
|
{
|
||||||
SiaCurlError ret;
|
SiaCurlError ret;
|
||||||
if ((res == CURLE_OK) && ((httpCode >= 200) && (httpCode <300)))
|
if ((res == CURLE_OK) && ((httpCode >= 200) && (httpCode <300)))
|
||||||
{
|
{
|
||||||
ret = CheckHttpError(result);
|
if (result.length())
|
||||||
if (ApiSuccess(ret))
|
{
|
||||||
{
|
response = json::parse(result.c_str());
|
||||||
ret = (result.length() ? CheckApiError((response = json::parse(result.c_str()))) : SiaCurlError::Success);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((res == CURLE_COULDNT_RESOLVE_HOST) || (res == CURLE_COULDNT_CONNECT))
|
if ((res == CURLE_COULDNT_RESOLVE_HOST) || (res == CURLE_COULDNT_CONNECT))
|
||||||
{
|
{
|
||||||
ret = SiaCurlError::NoResponse;
|
ret = SiaCurlErrorCode::NoResponse;
|
||||||
}
|
}
|
||||||
else if (httpCode)
|
else if (httpCode)
|
||||||
{
|
{
|
||||||
ret = SiaCurlError::HttpError;
|
ret = { SiaCurlErrorCode::HttpError, GetApiErrorMessage(result) };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret = SiaCurlError::UnknownFailure;
|
ret = { SiaCurlErrorCode::UnknownFailure, "Unknown curl error" };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,14 +121,14 @@ SiaCurlError CSiaCurl::_Get(const SString& path, const HttpParameters& parameter
|
|||||||
|
|
||||||
bool CSiaCurl::CheckVersion(SiaCurlError& error) const
|
bool CSiaCurl::CheckVersion(SiaCurlError& error) const
|
||||||
{
|
{
|
||||||
error = SiaCurlError::InvalidRequiredVersion;
|
error = SiaCurlErrorCode::InvalidRequiredVersion;
|
||||||
if (GetHostConfig().RequiredVersion.Length())
|
if (GetHostConfig().RequiredVersion.Length())
|
||||||
{
|
{
|
||||||
error = SiaCurlError::NoResponse;
|
error = SiaCurlErrorCode::NoResponse;
|
||||||
const SString serverVersion = GetServerVersion();
|
const SString serverVersion = GetServerVersion();
|
||||||
if (serverVersion.Length())
|
if (serverVersion.Length())
|
||||||
{
|
{
|
||||||
error = (serverVersion == GetHostConfig().RequiredVersion) ? SiaCurlError::Success : SiaCurlError::ServerVersionMismatch;
|
error = (serverVersion == GetHostConfig().RequiredVersion) ? SiaCurlErrorCode::Success : SiaCurlErrorCode::ServerVersionMismatch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -103,7 +103,7 @@ void CSiaApi::_CSiaRenter::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* sia
|
|||||||
std::uint32_t totalProgress = std::accumulate(std::next(fileList.begin()), fileList.end(), fileList[0]->GetUploadProgress(), [](const std::uint32_t& progress, const CSiaFilePtr& file)
|
std::uint32_t totalProgress = std::accumulate(std::next(fileList.begin()), fileList.end(), fileList[0]->GetUploadProgress(), [](const std::uint32_t& progress, const CSiaFilePtr& file)
|
||||||
{
|
{
|
||||||
return progress + min(100, file->GetUploadProgress());
|
return progress + min(100, file->GetUploadProgress());
|
||||||
}) / fileList.size();
|
}) / static_cast<std::uint32_t>(fileList.size());
|
||||||
|
|
||||||
SetTotalUsedBytes(total);
|
SetTotalUsedBytes(total);
|
||||||
SetTotalUploadProgress(totalProgress);
|
SetTotalUploadProgress(totalProgress);
|
||||||
@@ -135,10 +135,11 @@ void CSiaApi::_CSiaRenter::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* sia
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaRenter::RefreshFileTree( )
|
SiaApiError CSiaApi::_CSiaRenter::RefreshFileTree( )
|
||||||
{
|
{
|
||||||
SiaApiError ret = SiaApiError::RequestError;
|
SiaApiError ret;
|
||||||
CSiaFileTreePtr tempTree(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
CSiaFileTreePtr tempTree(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
||||||
json result;
|
json result;
|
||||||
if (ApiSuccess(GetSiaCurl().Get(L"/renter/files", result)))
|
SiaCurlError cerror = GetSiaCurl().Get(L"/renter/files", result);
|
||||||
|
if (ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
tempTree->BuildTree(result);
|
tempTree->BuildTree(result);
|
||||||
{
|
{
|
||||||
@@ -146,6 +147,10 @@ SiaApiError CSiaApi::_CSiaRenter::RefreshFileTree( )
|
|||||||
_fileTree = tempTree;
|
_fileTree = tempTree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -158,16 +163,18 @@ SiaApiError CSiaApi::_CSiaRenter::FileExists(const SString& siaPath, bool& exist
|
|||||||
{
|
{
|
||||||
exists = siaFileTree->FileExists(siaPath);
|
exists = siaFileTree->FileExists(siaPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaRenter::DownloadFile(const SString& siaPath, const SString& location) const
|
SiaApiError CSiaApi::_CSiaRenter::DownloadFile(const SString& siaPath, const SString& location) const
|
||||||
{
|
{
|
||||||
SiaApiError ret = SiaApiError::RequestError;
|
SiaApiError ret;
|
||||||
json result;
|
json result;
|
||||||
if (ApiSuccess(GetSiaCurl().Get(L"/renter/download/" + siaPath, { { L"destination", location } }, result)))
|
auto cerror = GetSiaCurl().Get(L"/renter/download/" + siaPath, { { L"destination", location } }, result);
|
||||||
|
if (!ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
ret = SiaApiError::Success;
|
ret = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -181,7 +188,7 @@ SiaApiError CSiaApi::_CSiaRenter::GetFileTree(CSiaFileTreePtr& siaFileTree) cons
|
|||||||
siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return SiaApiError::Success;
|
return SiaApiErrorCode::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
SiaRenterAllowance CSiaApi::_CSiaRenter::GetAllowance() const
|
SiaRenterAllowance CSiaApi::_CSiaRenter::GetAllowance() const
|
||||||
@@ -191,18 +198,19 @@ SiaRenterAllowance CSiaApi::_CSiaRenter::GetAllowance() const
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaRenter::SetAllowance(const SiaRenterAllowance& renterAllowance)
|
SiaApiError CSiaApi::_CSiaRenter::SetAllowance(const SiaRenterAllowance& renterAllowance)
|
||||||
{
|
{
|
||||||
SiaApiError ret = SiaApiError::RequestError;
|
SiaApiError ret;
|
||||||
|
|
||||||
json result;
|
json result;
|
||||||
if (ApiSuccess(GetSiaCurl().Post(L"/renter",
|
auto cerror = GetSiaCurl().Post(L"/renter",
|
||||||
{
|
{
|
||||||
{ "funds", SiaCurrencyToHastingsString(renterAllowance.Funds) },
|
{ "funds", SiaCurrencyToHastingsString(renterAllowance.Funds) },
|
||||||
{ "hosts", SString::FromUInt64(renterAllowance.Hosts) },
|
{ "hosts", SString::FromUInt64(renterAllowance.Hosts) },
|
||||||
{ "period", SString::FromUInt64(renterAllowance.Period) },
|
{ "period", SString::FromUInt64(renterAllowance.Period) },
|
||||||
{ "renewwindow", SString::FromUInt64 (renterAllowance.RenewWindowInBlocks) }
|
{ "renewwindow", SString::FromUInt64 (renterAllowance.RenewWindowInBlocks) }
|
||||||
}, result)))
|
}, result);
|
||||||
|
if (!ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
ret = SiaApiError::Success;
|
ret = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -83,20 +83,26 @@ void CSiaApi::_CSiaWallet::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* sia
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaWallet::Create(const SiaSeedLanguage& seedLanguage, SString& seed)
|
SiaApiError CSiaApi::_CSiaWallet::Create(const SiaSeedLanguage& seedLanguage, SString& seed)
|
||||||
{
|
{
|
||||||
SiaApiError error = SiaApiError::RequestError;
|
SiaApiError error = SiaApiErrorCode::NotConnected;
|
||||||
if (GetConnected())
|
if (GetConnected())
|
||||||
{
|
{
|
||||||
error = SiaApiError::WalletExists;
|
if (GetCreated())
|
||||||
if (!GetCreated())
|
{
|
||||||
|
error = SiaApiErrorCode::WalletExists;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
error = SiaApiError::RequestError;
|
|
||||||
json result;
|
json result;
|
||||||
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/init", { {L"dictionary", SeedLangToString(seedLanguage)} }, result);
|
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/init", { {L"dictionary", SeedLangToString(seedLanguage)} }, result);
|
||||||
if (ApiSuccess(cerror))
|
if (ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
error = SiaApiError::Success;
|
error = SiaApiErrorCode::Success;
|
||||||
seed = result["primaryseed"].get<std::string>();
|
seed = result["primaryseed"].get<std::string>();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,24 +111,26 @@ SiaApiError CSiaApi::_CSiaWallet::Create(const SiaSeedLanguage& seedLanguage, SS
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaWallet::Restore(const SString& seed)
|
SiaApiError CSiaApi::_CSiaWallet::Restore(const SString& seed)
|
||||||
{
|
{
|
||||||
SiaApiError error = SiaApiError::NotImplemented;
|
SiaApiError error = SiaApiErrorCode::NotImplemented;
|
||||||
// TODO Future enhancement
|
// TODO Future enhancement
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaWallet::Lock()
|
SiaApiError CSiaApi::_CSiaWallet::Lock()
|
||||||
{
|
{
|
||||||
SiaApiError error = GetCreated() ? (GetLocked() ? SiaApiError::WalletLocked : SiaApiError::Success) : SiaApiError::WalletNotCreated;
|
SiaApiError error = GetCreated() ? (GetLocked() ? SiaApiErrorCode::WalletLocked : SiaApiErrorCode::Success) : SiaApiErrorCode::WalletNotCreated;
|
||||||
if (ApiSuccess(error))
|
if (ApiSuccess(error))
|
||||||
{
|
{
|
||||||
error = SiaApiError::RequestError;
|
|
||||||
|
|
||||||
json result;
|
json result;
|
||||||
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/lock", {}, result);
|
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/lock", {}, result);
|
||||||
if (ApiSuccess(cerror))
|
if (ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
error = SiaApiError::Success;
|
error = SiaApiErrorCode::Success;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -130,17 +138,19 @@ SiaApiError CSiaApi::_CSiaWallet::Lock()
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaWallet::Unlock(const SString& password)
|
SiaApiError CSiaApi::_CSiaWallet::Unlock(const SString& password)
|
||||||
{
|
{
|
||||||
SiaApiError error = GetCreated() ? (GetLocked() ? SiaApiError::Success : SiaApiError::WalletUnlocked) : SiaApiError::WalletNotCreated;
|
SiaApiError error = GetCreated() ? (GetLocked() ? SiaApiErrorCode::Success : SiaApiErrorCode::WalletUnlocked) : SiaApiErrorCode::WalletNotCreated;
|
||||||
if (ApiSuccess(error))
|
if (ApiSuccess(error))
|
||||||
{
|
{
|
||||||
error = SiaApiError::RequestError;
|
|
||||||
|
|
||||||
json result;
|
json result;
|
||||||
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/unlock", { {L"encryptionpassword", password} }, result);
|
SiaCurlError cerror = GetSiaCurl().Post(L"/wallet/unlock", { {L"encryptionpassword", password} }, result);
|
||||||
if (ApiSuccess(cerror))
|
if (ApiSuccess(cerror))
|
||||||
{
|
{
|
||||||
error = SiaApiError::Success;
|
error = SiaApiErrorCode::Success;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error = { SiaApiErrorCode::RequestError, cerror.GetReason() };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
@@ -387,7 +387,7 @@ UploadStatus CUploadManager::GetUploadStatus(const SString& siaPath)
|
|||||||
|
|
||||||
UploadError CUploadManager::AddOrUpdate(const SString& siaPath, SString filePath)
|
UploadError CUploadManager::AddOrUpdate(const SString& siaPath, SString filePath)
|
||||||
{
|
{
|
||||||
UploadError ret = UploadError::Success;
|
UploadError ret;
|
||||||
|
|
||||||
// Relative to absolute and grab parent folder of source
|
// Relative to absolute and grab parent folder of source
|
||||||
FilePath rootPath = filePath;
|
FilePath rootPath = filePath;
|
||||||
@@ -439,26 +439,26 @@ UploadError CUploadManager::AddOrUpdate(const SString& siaPath, SString filePath
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseInsertFailed(siaPath, filePath, insert.getErrorMsg())));
|
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseInsertFailed(siaPath, filePath, insert.getErrorMsg())));
|
||||||
ret = UploadError::DatabaseError;
|
ret = UploadErrorCode::DatabaseError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SQLite::Exception e)
|
catch (SQLite::Exception e)
|
||||||
{
|
{
|
||||||
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("AddOrUpdate(insert)", e)));
|
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("AddOrUpdate(insert)", e)));
|
||||||
ret = UploadError::DatabaseError;
|
ret = { UploadErrorCode::DatabaseError, e.getErrorStr() };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SQLite::Exception e)
|
catch (SQLite::Exception e)
|
||||||
{
|
{
|
||||||
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("AddOrUpdate(query)", e)));
|
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("AddOrUpdate(query)", e)));
|
||||||
ret = UploadError::DatabaseError;
|
ret = { UploadErrorCode::DatabaseError, e.getErrorStr() };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(SourceFileNotFound(siaPath, filePath)));
|
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(SourceFileNotFound(siaPath, filePath)));
|
||||||
ret = UploadError::SourceFileNotFound;
|
ret = UploadErrorCode::SourceFileNotFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -466,7 +466,7 @@ UploadError CUploadManager::AddOrUpdate(const SString& siaPath, SString filePath
|
|||||||
|
|
||||||
UploadError CUploadManager::Remove(const SString& siaPath)
|
UploadError CUploadManager::Remove(const SString& siaPath)
|
||||||
{
|
{
|
||||||
UploadError ret = UploadError::Success;
|
UploadError ret;
|
||||||
bool remove = false;
|
bool remove = false;
|
||||||
SString siaDriveFilePath;
|
SString siaDriveFilePath;
|
||||||
try
|
try
|
||||||
@@ -506,7 +506,7 @@ UploadError CUploadManager::Remove(const SString& siaPath)
|
|||||||
catch (SQLite::Exception e)
|
catch (SQLite::Exception e)
|
||||||
{
|
{
|
||||||
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("Remove", e)));
|
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DatabaseExceptionOccurred("Remove", e)));
|
||||||
ret = UploadError::DatabaseError;
|
ret = { UploadErrorCode::DatabaseError, e.getErrorStr() };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remove)
|
if (remove)
|
||||||
|
Reference in New Issue
Block a user