1895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// Copyright (c) 2009, Google Inc. 2895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// All rights reserved. 3895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// 4895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// Redistribution and use in source and binary forms, with or without 5895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// modification, are permitted provided that the following conditions are 6895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// met: 7895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// 8895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// * Redistributions of source code must retain the above copyright 9895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// notice, this list of conditions and the following disclaimer. 10895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// * Redistributions in binary form must reproduce the above 11895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// copyright notice, this list of conditions and the following disclaimer 12895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// in the documentation and/or other materials provided with the 13895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// distribution. 14895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// * Neither the name of Google Inc. nor the names of its 15895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// contributors may be used to endorse or promote products derived from 16895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// this software without specific prior written permission. 17895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// 18895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 30895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 31816e71d26f0a7de6a3d1d45f6c00ff8909ec2de0thestig@chromium.org#ifndef COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_ 32816e71d26f0a7de6a3d1d45f6c00ff8909ec2de0thestig@chromium.org#define COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_ 33816e71d26f0a7de6a3d1d45f6c00ff8909ec2de0thestig@chromium.org 34895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid#include <string> 35895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid#include <map> 36895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 3720a1df34676d6f323731d0bda8cb4c80a67d8f3bmmandlis@chromium.org#include "common/linux/libcurl_wrapper.h" 38f1d4dc143f46f4e1b7c39f6ce7a0297131f307b4thestig@chromium.org#include "common/scoped_ptr.h" 394e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com#include "common/using_std_string.h" 404e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com 41895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsidnamespace google_breakpad { 42895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 43895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsidclass GoogleCrashdumpUploader { 44895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid public: 454e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com GoogleCrashdumpUploader(const string& product, 464e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& version, 474e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& guid, 484e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ptime, 494e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ctime, 504e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& email, 514e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& comments, 524e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& minidump_pathname, 534e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& crash_server, 544e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_host, 554e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_userpassword); 56895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 574e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com GoogleCrashdumpUploader(const string& product, 584e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& version, 594e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& guid, 604e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ptime, 614e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ctime, 624e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& email, 634e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& comments, 644e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& minidump_pathname, 654e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& crash_server, 664e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_host, 674e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_userpassword, 68895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid LibcurlWrapper* http_layer); 69895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 704e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com void Init(const string& product, 714e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& version, 724e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& guid, 734e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ptime, 744e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& ctime, 754e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& email, 764e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& comments, 774e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& minidump_pathname, 784e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& crash_server, 794e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_host, 804e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com const string& proxy_userpassword, 81895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid LibcurlWrapper* http_layer); 82d6c6a46f0c088ba9e80acbf9453765043df1ff3fgunsch@chromium.org bool Upload(int* http_status_code, 83d6c6a46f0c088ba9e80acbf9453765043df1ff3fgunsch@chromium.org string* http_response_header, 84d6c6a46f0c088ba9e80acbf9453765043df1ff3fgunsch@chromium.org string* http_response_body); 85895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 86895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid private: 87895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid bool CheckRequiredParametersArePresent(); 88895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 89f1d4dc143f46f4e1b7c39f6ce7a0297131f307b4thestig@chromium.org scoped_ptr<LibcurlWrapper> http_layer_; 904e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string product_; 914e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string version_; 924e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string guid_; 934e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string ptime_; 944e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string ctime_; 954e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string email_; 964e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string comments_; 974e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string minidump_pathname_; 98895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 994e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string crash_server_; 1004e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string proxy_host_; 1014e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string proxy_userpassword_; 102895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid 1034e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com std::map<string, string> parameters_; 104895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid}; 105895d3d17ee873ea12b64db0df2d2e2e390c9d5e8nealsid} 106816e71d26f0a7de6a3d1d45f6c00ff8909ec2de0thestig@chromium.org 107816e71d26f0a7de6a3d1d45f6c00ff8909ec2de0thestig@chromium.org#endif // COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_ 108