desktop/source/minidump/minidump_upload.cxx | 46 +++++++++++++++++++--------- 1 file changed, 32 insertions(+), 14 deletions(-)
New commits: commit 244f79731ca03f75df99c982c8db6abd2053ae72 Author: Markus Mohrhard <[email protected]> Date: Thu May 26 13:20:55 2016 +0200 support the json key value data upload for crash report on client side Change-Id: I93f77f9363c016e0cc5a3e3c867de9f426e5bdf0 (cherry picked from commit 4aca087c7cb9ffe831b277a62ad3e993c3b2ca58) generate correct json files Change-Id: I0d39724e550427c7de31ebc4221f1b008a2451c3 Reviewed-on: https://gerrit.libreoffice.org/25648 Tested-by: Jenkins <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> (cherry picked from commit 4d4be0c0f1fd1c9bdfe815eddd0ff6b49b5bba39) Reviewed-on: https://gerrit.libreoffice.org/25821 diff --git a/desktop/source/minidump/minidump_upload.cxx b/desktop/source/minidump/minidump_upload.cxx index d75453a..3f17c04 100644 --- a/desktop/source/minidump/minidump_upload.cxx +++ b/desktop/source/minidump/minidump_upload.cxx @@ -12,6 +12,7 @@ #include <memory> #include <iostream> #include <fstream> +#include <sstream> #include <curl/curl.h> @@ -62,13 +63,32 @@ void getProperty(const std::string& key, std::string& value, } } +std::string generate_json(const std::map<std::string, std::string>& parameters) +{ + std::ostringstream stream; + stream << "{\n"; + bool first = true; + for (auto itr = parameters.begin(), itrEnd = parameters.end(); itr != itrEnd; ++itr) + { + if (!first) + { + stream << ",\n"; + } + first = false; + stream << "\"" << itr->first << "\": \"" << itr->second << "\""; + } + stream << "\n}"; + + return stream.str(); +} + bool uploadContent(std::map<std::string, std::string>& parameters) { CURL* curl = curl_easy_init(); if (!curl) return false; - std::string proxy, proxy_user_pwd, ca_certificate_file, file, url; + std::string proxy, proxy_user_pwd, ca_certificate_file, file, url, version; getProperty("Proxy", proxy, parameters); getProperty("ProxyUserPW", proxy_user_pwd, parameters); @@ -76,6 +96,7 @@ bool uploadContent(std::map<std::string, std::string>& parameters) getProperty("DumpFile", file, parameters); getProperty("URL", url, parameters); + getProperty("Version", version, parameters); if (url.empty()) return false; @@ -92,13 +113,16 @@ bool uploadContent(std::map<std::string, std::string>& parameters) curl_httppost* formpost = nullptr; curl_httppost* lastptr = nullptr; - for (auto itr = parameters.begin(), itEnd = parameters.end(); itr != itEnd; ++itr) - { - curl_formadd(&formpost, &lastptr, - CURLFORM_COPYNAME, itr->first.c_str(), - CURLFORM_COPYCONTENTS, itr->second.c_str(), - CURLFORM_END); - } + std::string additional_data = generate_json(parameters); + curl_formadd(&formpost, &lastptr, + CURLFORM_COPYNAME, "AdditionalData", + CURLFORM_COPYCONTENTS, additional_data.c_str(), + CURLFORM_END); + + curl_formadd(&formpost, &lastptr, + CURLFORM_COPYNAME, "Version", + CURLFORM_COPYCONTENTS, version.c_str(), + CURLFORM_END); std::string response_body; long response_code; @@ -172,12 +196,6 @@ bool readConfig(char** argv) return false; } - if (parameters.find("ProductName") == parameters.end()) - { - std::cerr << "ini file needs to contain a ket ProductName!"; - return false; - } - uploadContent(parameters); return true; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
