51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include <vector>
#include <iostream>
#include <sstream>
+#include <memory>
#include "convert_json.h"
-#include "mods.h"
-#include "config.h"
-#include "log.h"
-#include "settings.h"
-#include "httpfetch.h"
-#include "porting.h"
-Json::Value fetchJsonValue(const std::string &url,
- std::vector<std::string> *extra_headers)
+void fastWriteJson(const Json::Value &value, std::ostream &to)
{
- HTTPFetchRequest fetch_request;
- HTTPFetchResult fetch_result;
- fetch_request.url = url;
- fetch_request.caller = HTTPFETCH_SYNC;
-
- if (extra_headers != NULL)
- fetch_request.extra_headers = *extra_headers;
-
- httpfetch_sync(fetch_request, fetch_result);
-
- if (!fetch_result.succeeded) {
- return Json::Value();
- }
- Json::Value root;
- Json::Reader reader;
- std::istringstream stream(fetch_result.data);
-
- if (!reader.parse(stream, root)) {
- errorstream << "URL: " << url << std::endl;
- errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages();
- if (fetch_result.data.size() > 100) {
- errorstream << "Data (" << fetch_result.data.size()
- << " bytes) printed to warningstream." << std::endl;
- warningstream << "data: \"" << fetch_result.data << "\"" << std::endl;
- } else {
- errorstream << "data: \"" << fetch_result.data << "\"" << std::endl;
- }
- return Json::Value();
- }
+ Json::StreamWriterBuilder builder;
+ builder["indentation"] = "";
+ std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
+ writer->write(value, &to);
+}
- return root;
+std::string fastWriteJson(const Json::Value &value)
+{
+ std::ostringstream oss;
+ fastWriteJson(value, oss);
+ return oss.str();
}