1
0

[Unit Test] SiaCurl::Get() - Basic get test

Added json parser
This commit is contained in:
Scott E. Graves
2017-02-02 21:51:33 -06:00
parent e53ad03dd7
commit 4ef968180d
9 changed files with 12722 additions and 11 deletions

View File

@@ -2,6 +2,9 @@
#include <string>
#include <cstdint>
#include <memory>
#include "json.hpp"
using json = nlohmann::json;
#ifdef _UNICODE
#define String std::wstring

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -201,6 +201,7 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="json.hpp" />
<ClInclude Include="Resource.h" />
<ClInclude Include="SiaApi.h" />
<ClInclude Include="SiaCommon.h" />

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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());
}
};

View File

@@ -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">

View File

@@ -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>