From 137154eacd98118beef0664d47a2eae82eefd1f0 Mon Sep 17 00:00:00 2001
From: Luca Weiss <luca@z3ntu.xyz>
Date: Sat, 9 Feb 2019 01:31:42 +0100
Subject: [PATCH] Port to new jsoncpp API

---
 tests/http_client_load_test.cpp      | 14 +++--
 tests/http_client_test.cpp           | 80 +++++++++++++++++-----------
 tests/http_streaming_client_test.cpp | 75 +++++++++++++++-----------
 3 files changed, 99 insertions(+), 70 deletions(-)

diff --git a/tests/http_client_load_test.cpp b/tests/http_client_load_test.cpp
index 79d125b..105c316 100644
--- a/tests/http_client_load_test.cpp
+++ b/tests/http_client_load_test.cpp
@@ -132,10 +132,6 @@ TEST_F(HttpClientLoadTest, async_head_request_for_existing_resource_succeeds)
 
     auto response_verifier = [](const http::Response& response) -> bool
     {
-        // All endpoint data on httpbin.org is JSON encoded.
-        json::Value root;
-        json::Reader reader;
-
         // We expect the query to complete successfully
         EXPECT_EQ(core::net::http::Status::ok, response.status);
 
@@ -159,12 +155,13 @@ TEST_F(HttpClientLoadTest, async_get_request_for_existing_resource_succeeds)
     {
         // All endpoint data on httpbin.org is JSON encoded.
         json::Value root;
-        json::Reader reader;
+        json::CharReaderBuilder builder;
+        std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
         // We expect the query to complete successfully
         EXPECT_EQ(core::net::http::Status::ok, response.status);
         // Parsing the body of the response as JSON should succeed.
-        EXPECT_TRUE(reader.parse(response.body, root));
+        EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
         // The url field of the payload should equal the original url we requested.
         EXPECT_EQ(url, root["url"].asString());
 
@@ -191,12 +188,13 @@ TEST_F(HttpClientLoadTest, async_post_request_for_existing_resource_succeeds)
     {
         // All endpoint data on httpbin.org is JSON encoded.
         json::Value root;
-        json::Reader reader;
+        json::CharReaderBuilder builder;
+        std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
         // We expect the query to complete successfully
         EXPECT_EQ(core::net::http::Status::ok, response.status);
         // Parsing the body of the response as JSON should succeed.
-        EXPECT_TRUE(reader.parse(response.body, root));
+        EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
         // The url field of the payload should equal the original url we requested.
         EXPECT_EQ(payload, root["data"].asString());
 
diff --git a/tests/http_client_test.cpp b/tests/http_client_test.cpp
index dd37d4f..e7cdd73 100644
--- a/tests/http_client_test.cpp
+++ b/tests/http_client_test.cpp
@@ -144,7 +144,8 @@ TEST(HttpClient, get_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -152,7 +153,7 @@ TEST(HttpClient, get_request_for_existing_resource_succeeds)
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(url, root["url"].asString());
 }
@@ -174,7 +175,8 @@ TEST(HttpClient, get_request_with_custom_headers_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -183,7 +185,7 @@ TEST(HttpClient, get_request_with_custom_headers_for_existing_resource_succeeds)
     EXPECT_EQ(core::net::http::Status::ok, response.status);
 
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
 
     auto headers = root["headers"];
 
@@ -207,7 +209,8 @@ TEST(HttpClient, empty_header_values_are_handled_correctly)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -216,7 +219,7 @@ TEST(HttpClient, empty_header_values_are_handled_correctly)
     EXPECT_EQ(core::net::http::Status::ok, response.status);
 
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
 
     auto headers = root["headers"];
     EXPECT_EQ(std::string{}, headers["Empty"].asString());
@@ -240,7 +243,8 @@ TEST(HttpClient, get_request_for_existing_resource_guarded_by_basic_auth_succeed
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -248,7 +252,7 @@ TEST(HttpClient, get_request_for_existing_resource_guarded_by_basic_auth_succeed
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -274,7 +278,8 @@ TEST(HttpClient, DISABLED_get_request_for_existing_resource_guarded_by_digest_au
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -282,7 +287,7 @@ TEST(HttpClient, DISABLED_get_request_for_existing_resource_guarded_by_digest_au
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -323,12 +328,13 @@ TEST(HttpClient, async_get_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(url, root["url"].asString());
 
@@ -362,7 +368,8 @@ TEST(HttpClient, async_get_request_for_existing_resource_guarded_by_basic_authen
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     std::promise<core::net::http::Response> promise;
     auto future = promise.get_future();
@@ -392,7 +399,7 @@ TEST(HttpClient, async_get_request_for_existing_resource_guarded_by_basic_authen
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -416,7 +423,8 @@ TEST(HttpClient, post_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter);
@@ -424,7 +432,7 @@ TEST(HttpClient, post_request_for_existing_resource_succeeds)
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(payload, root["data"].asString());
 }
@@ -451,10 +459,11 @@ TEST(HttpClient, post_form_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ("test", root["form"]["test"].asString());
 }
 
@@ -476,12 +485,13 @@ TEST(HttpClient, post_request_for_file_with_large_chunk_succeeds)
                                 size);
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     auto response = request->execute(default_progress_reporter);
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -498,12 +508,13 @@ TEST(HttpClient, put_request_for_existing_resource_succeeds)
                                value.size());
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     auto response = request->execute(default_progress_reporter);
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(payload.str(), root["data"].asString());
 }
 
@@ -525,12 +536,13 @@ TEST(HttpClient, put_request_for_file_with_large_chunk_succeeds)
                                size);
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     auto response = request->execute(default_progress_reporter);
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -542,12 +554,13 @@ TEST(HttpClient, del_request_for_existing_resource_succeeds)
     auto request = client->del(http::Request::Configuration::from_uri_as_string(url));
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     auto response = request->execute(default_progress_reporter);
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -615,7 +628,8 @@ const char* submit() { return "/v1/submit?key=net-cpp-testing"; }
 // for API and endpoint documentation.
 TEST(HttpClient, DISABLED_search_for_location_on_mozillas_location_service_succeeds)
 {
-    json::FastWriter writer;
+    json::StreamWriterBuilder wbuilder;
+    std::unique_ptr<json::StreamWriter> writer(wbuilder.newStreamWriter());
     json::Value search;
     json::Value cell;
     cell["radio"] = "umts";
@@ -642,16 +656,17 @@ TEST(HttpClient, DISABLED_search_for_location_on_mozillas_location_service_succe
             std::string(com::mozilla::services::location::host) +
             com::mozilla::services::location::resources::v1::search();
     auto request = client->post(http::Request::Configuration::from_uri_as_string(url),
-                                writer.write(search),
+                                Json::writeString(wbuilder, search),
                                 http::ContentType::json);
 
     auto response = request->execute(default_progress_reporter);
 
-    json::Reader reader;
+    json::CharReaderBuilder rbuilder;
+    std::unique_ptr<Json::CharReader> reader(rbuilder.newCharReader());
     json::Value result;
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, result));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &result, NULL));
 
     // We cannot be sure that the server has got information for the given
     // cell and wifi ids. For that, we disable the test.
@@ -693,13 +708,14 @@ TEST(HttpClient, DISABLED_submit_of_location_on_mozillas_location_service_succee
 
     submit["items"].append(item);
 
-    json::FastWriter writer;
+    json::StreamWriterBuilder wbuilder;
+    std::unique_ptr<json::StreamWriter> writer(wbuilder.newStreamWriter());
     auto client = http::make_client();
     auto url =
             std::string(com::mozilla::services::location::host) +
             com::mozilla::services::location::resources::v1::submit();
     auto request = client->post(http::Request::Configuration::from_uri_as_string(url),
-                                writer.write(submit),
+                                Json::writeString(wbuilder, submit),
                                 http::ContentType::json);
     auto response = request->execute(default_progress_reporter);
 
diff --git a/tests/http_streaming_client_test.cpp b/tests/http_streaming_client_test.cpp
index 68ad100..7e9faa1 100644
--- a/tests/http_streaming_client_test.cpp
+++ b/tests/http_streaming_client_test.cpp
@@ -156,7 +156,8 @@ TEST(StreamingHttpClient, get_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -164,7 +165,7 @@ TEST(StreamingHttpClient, get_request_for_existing_resource_succeeds)
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(url, root["url"].asString());
 }
@@ -191,7 +192,8 @@ TEST(StreamingHttpClient, get_request_with_custom_headers_for_existing_resource_
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -200,7 +202,7 @@ TEST(StreamingHttpClient, get_request_with_custom_headers_for_existing_resource_
     EXPECT_EQ(core::net::http::Status::ok, response.status);
 
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
 
     auto headers = root["headers"];
 
@@ -229,7 +231,8 @@ TEST(StreamingHttpClient, empty_header_values_are_handled_correctly)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -238,7 +241,7 @@ TEST(StreamingHttpClient, empty_header_values_are_handled_correctly)
     EXPECT_EQ(core::net::http::Status::ok, response.status);
 
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
 
     auto headers = root["headers"];
     EXPECT_EQ(std::string{}, headers["Empty"].asString());
@@ -267,7 +270,8 @@ TEST(StreamingHttpClient, get_request_for_existing_resource_guarded_by_basic_aut
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -275,7 +279,7 @@ TEST(StreamingHttpClient, get_request_for_existing_resource_guarded_by_basic_aut
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -306,7 +310,8 @@ TEST(StreamingHttpClient, DISABLED_get_request_for_existing_resource_guarded_by_
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -314,7 +319,7 @@ TEST(StreamingHttpClient, DISABLED_get_request_for_existing_resource_guarded_by_
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -361,12 +366,13 @@ TEST(StreamingHttpClient, async_get_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(url, root["url"].asString());
 
@@ -405,7 +411,8 @@ TEST(StreamingHttpClient, async_get_request_for_existing_resource_guarded_by_bas
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     std::promise<core::net::http::Response> promise;
     auto future = promise.get_future();
@@ -436,7 +443,7 @@ TEST(StreamingHttpClient, async_get_request_for_existing_resource_guarded_by_bas
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // We expect authentication to work.
     EXPECT_TRUE(root["authenticated"].asBool());
     // With the correct user id
@@ -465,7 +472,8 @@ TEST(StreamingHttpClient, post_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     // We finally execute the query synchronously and story the response.
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
@@ -473,7 +481,7 @@ TEST(StreamingHttpClient, post_request_for_existing_resource_succeeds)
     // We expect the query to complete successfully
     EXPECT_EQ(core::net::http::Status::ok, response.status);
     // Parsing the body of the response as JSON should succeed.
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     // The url field of the payload should equal the original url we requested.
     EXPECT_EQ(payload, root["data"].asString());
 }
@@ -505,10 +513,11 @@ TEST(StreamingHttpClient, post_form_request_for_existing_resource_succeeds)
 
     // All endpoint data on httpbin.org is JSON encoded.
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ("test", root["form"]["test"].asString());
 }
 
@@ -536,10 +545,11 @@ TEST(StreamingHttpClient, post_request_for_file_with_large_chunk_succeeds)
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
   
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -569,10 +579,11 @@ TEST(StreamingHttpClient, post_request_for_file_with_large_chunk_with_read_callb
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
   
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -596,10 +607,11 @@ TEST(StreamingHttpClient, put_request_for_existing_resource_succeeds)
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
 
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(payload.str(), root["data"].asString());
 }
 
@@ -627,10 +639,11 @@ TEST(StreamingHttpClient, put_request_for_file_with_large_chunk_succeeds)
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
   
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
   
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -660,10 +673,11 @@ TEST(StreamingHttpClient, put_request_for_file_with_large_chunk_with_read_callba
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
   
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
   
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
@@ -682,10 +696,11 @@ TEST(StreamingHttpClient, del_request_for_existing_resource_succeeds)
     auto response = request->execute(default_progress_reporter, dh->to_data_handler());
 
     json::Value root;
-    json::Reader reader;
+    json::CharReaderBuilder builder;
+    std::unique_ptr<json::CharReader> reader(builder.newCharReader());
   
     EXPECT_EQ(core::net::http::Status::ok, response.status);
-    EXPECT_TRUE(reader.parse(response.body, root));
+    EXPECT_TRUE(reader->parse(response.body.c_str(), response.body.c_str() + response.body.size(), &root, NULL));
     EXPECT_EQ(url, root["url"].asString());
 }
 
-- 
2.24.1


