• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // Copyright (c) 2009, Google Inc.
2  // All rights reserved.
3  //
4  // Redistribution and use in source and binary forms, with or without
5  // modification, are permitted provided that the following conditions are
6  // met:
7  //
8  //     * Redistributions of source code must retain the above copyright
9  // notice, this list of conditions and the following disclaimer.
10  //     * Redistributions in binary form must reproduce the above
11  // copyright notice, this list of conditions and the following disclaimer
12  // in the documentation and/or other materials provided with the
13  // distribution.
14  //     * Neither the name of Google Inc. nor the names of its
15  // contributors may be used to endorse or promote products derived from
16  // this software without specific prior written permission.
17  //
18  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  
30  
31  #ifndef COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
32  #define COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
33  
34  #include <string>
35  #include <map>
36  
37  #include "common/linux/libcurl_wrapper.h"
38  #include "common/scoped_ptr.h"
39  #include "common/using_std_string.h"
40  
41  namespace google_breakpad {
42  
43  class GoogleCrashdumpUploader {
44   public:
45    GoogleCrashdumpUploader(const string& product,
46                            const string& version,
47                            const string& guid,
48                            const string& ptime,
49                            const string& ctime,
50                            const string& email,
51                            const string& comments,
52                            const string& minidump_pathname,
53                            const string& crash_server,
54                            const string& proxy_host,
55                            const string& proxy_userpassword);
56  
57    GoogleCrashdumpUploader(const string& product,
58                            const string& version,
59                            const string& guid,
60                            const string& ptime,
61                            const string& ctime,
62                            const string& email,
63                            const string& comments,
64                            const string& minidump_pathname,
65                            const string& crash_server,
66                            const string& proxy_host,
67                            const string& proxy_userpassword,
68                            LibcurlWrapper* http_layer);
69  
70    void Init(const string& product,
71              const string& version,
72              const string& guid,
73              const string& ptime,
74              const string& ctime,
75              const string& email,
76              const string& comments,
77              const string& minidump_pathname,
78              const string& crash_server,
79              const string& proxy_host,
80              const string& proxy_userpassword,
81              LibcurlWrapper* http_layer);
82    bool Upload(int* http_status_code,
83                string* http_response_header,
84                string* http_response_body);
85  
86   private:
87    bool CheckRequiredParametersArePresent();
88  
89    scoped_ptr<LibcurlWrapper> http_layer_;
90    string product_;
91    string version_;
92    string guid_;
93    string ptime_;
94    string ctime_;
95    string email_;
96    string comments_;
97    string minidump_pathname_;
98  
99    string crash_server_;
100    string proxy_host_;
101    string proxy_userpassword_;
102  
103    std::map<string, string> parameters_;
104  };
105  }
106  
107  #endif  // COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
108