blob: 9e1cd0aecf716afb44bfd02999ff99a95eea517e [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_CRASH_CAST_CRASHDUMP_UPLOADER_H_
#define CHROMECAST_CRASH_CAST_CRASHDUMP_UPLOADER_H_
#include <map>
#include <memory>
#include <string>
#include "base/macros.h"
namespace google_breakpad {
class LibcurlWrapper;
}
namespace chromecast {
struct CastCrashdumpData {
CastCrashdumpData();
CastCrashdumpData(const CastCrashdumpData& other);
~CastCrashdumpData();
std::string product;
std::string version;
std::string guid;
std::string ptime;
std::string ctime;
std::string email;
std::string comments;
std::string minidump_pathname;
std::string crash_server;
std::string proxy_host;
std::string proxy_userpassword;
};
class CastCrashdumpUploader {
public:
CastCrashdumpUploader(
const CastCrashdumpData& data,
std::unique_ptr<google_breakpad::LibcurlWrapper> http_layer);
explicit CastCrashdumpUploader(const CastCrashdumpData& data);
virtual ~CastCrashdumpUploader();
virtual bool AddAttachment(const std::string& label,
const std::string& filename);
virtual void SetParameter(const std::string& key, const std::string& value);
virtual bool Upload(std::string* response);
private:
bool CheckRequiredParametersArePresent();
std::unique_ptr<google_breakpad::LibcurlWrapper> http_layer_;
CastCrashdumpData data_;
// Holds the following mapping for attachments: <label, filepath>
std::map<std::string, std::string> attachments_;
// Holds the following mapping for HTTP request params: <key, value>
std::map<std::string, std::string> parameters_;
DISALLOW_COPY_AND_ASSIGN(CastCrashdumpUploader);
};
} // namespace chromecast
#endif // CHROMECAST_CRASH_CAST_CRASHDUMP_UPLOADER_H_