[Unit Test] SiaCurl::Get() - Basic get test
Added json parser
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
#include <string>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include "json.hpp"
|
||||
|
||||
using json = nlohmann::json;
|
||||
|
||||
#ifdef _UNICODE
|
||||
#define String std::wstring
|
||||
|
@@ -20,21 +20,25 @@ CStringA CSiaCurl::ConstructPath(const CString& relativePath) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
SiaCurlError CSiaCurl::Get(const CString& path, CString& result)
|
||||
SiaCurlError CSiaCurl::Get(const CString& path, json& response)
|
||||
{
|
||||
CStringA result;
|
||||
SiaCurlError ret = SiaCurlError::Success;
|
||||
curl_easy_setopt(_curlHandle, CURLOPT_USERAGENT, "Sia-Agent");
|
||||
curl_easy_setopt(_curlHandle, CURLOPT_URL, static_cast<LPCSTR>(ConstructPath(path)));
|
||||
curl_easy_setopt(_curlHandle, CURLOPT_WRITEFUNCTION, static_cast<size_t(*)(char*, size_t, size_t, void *)>([](char *buffer, size_t size, size_t nitems, void *outstream) -> size_t
|
||||
{
|
||||
(*reinterpret_cast<CString*>(outstream)) += CString(reinterpret_cast<LPCSTR>(buffer), size * nitems);
|
||||
(*reinterpret_cast<CStringA*>(outstream)) += CString(reinterpret_cast<LPCSTR>(buffer), size * nitems);
|
||||
return size * nitems;
|
||||
}));
|
||||
curl_easy_setopt(_curlHandle, CURLOPT_WRITEDATA, &result);
|
||||
const CURLcode res = curl_easy_perform(_curlHandle);
|
||||
if (res != CURLE_OK)
|
||||
{
|
||||
|
||||
ret = SiaCurlError::Failed;
|
||||
}
|
||||
|
||||
return SiaCurlError::Success;
|
||||
response = json::parse((LPCSTR)result);
|
||||
|
||||
return ret;
|
||||
}
|
@@ -11,7 +11,8 @@ class AFX_EXT_CLASS CSiaCurl
|
||||
public:
|
||||
enum class _SiaCurlError
|
||||
{
|
||||
Success
|
||||
Success,
|
||||
Failed
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -29,7 +30,7 @@ private:
|
||||
CStringA ConstructPath(const CString& relativePath) const;
|
||||
|
||||
public:
|
||||
_SiaCurlError Get(const CString& path, CString& result);
|
||||
_SiaCurlError Get(const CString& path, json& result);
|
||||
};
|
||||
|
||||
typedef CSiaCurl::_SiaCurlError SiaCurlError;
|
||||
|
@@ -201,6 +201,7 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="json.hpp" />
|
||||
<ClInclude Include="Resource.h" />
|
||||
<ClInclude Include="SiaApi.h" />
|
||||
<ClInclude Include="SiaCommon.h" />
|
||||
|
@@ -56,6 +56,9 @@
|
||||
<ClInclude Include="SiaCurl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="json.hpp">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="SiaDrive.Api.def">
|
||||
|
12697
SiaDrive.Api/json.hpp
Normal file
12697
SiaDrive.Api/json.hpp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -10,13 +10,15 @@ namespace UnitTests
|
||||
TEST_CLASS(SiaCurl)
|
||||
{
|
||||
public:
|
||||
TEST_METHOD(TestMethod1)
|
||||
TEST_METHOD(GetBasicTest)
|
||||
{
|
||||
CSiaCurl s;
|
||||
s.SetHostConfig({ "localhost", 9980 });
|
||||
|
||||
CString result;
|
||||
s.Get(L"/daemon/version", result);
|
||||
json result;
|
||||
SiaCurlError err = s.Get(L"/daemon/version", result);
|
||||
Assert::IsTrue(err == SiaCurlError::Success);
|
||||
Assert::IsTrue(result["version"].is_string());
|
||||
}
|
||||
|
||||
};
|
@@ -164,7 +164,7 @@
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unittest1.cpp" />
|
||||
<ClCompile Include="SiaCurlTests.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SiaDrive.Api\SiaDrive.Api.vcxproj">
|
||||
|
@@ -26,7 +26,7 @@
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unittest1.cpp">
|
||||
<ClCompile Include="SiaCurlTests.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
|
Reference in New Issue
Block a user