#ifndef REMOTING_BASE_URL_REQUEST_H_
#define REMOTING_BASE_URL_REQUEST_H_
#include <memory>
#include <string>
#include "base/functional/callback_forward.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
namespace remoting {
class UrlRequest {
public:
enum class Type {
GET,
POST,
};
struct Result {
Result() = default;
Result(int status, std::string response_body)
: success(true), status(status), response_body(response_body) {}
static Result Failed() { return Result(); }
bool success = false;
int status = 0;
std::string response_body;
};
typedef base::OnceCallback<void(const Result& result)> OnResultCallback;
virtual ~UrlRequest() {}
virtual void AddHeader(const std::string& value) = 0;
virtual void SetPostData(const std::string& content_type,
const std::string& post_data) = 0;
virtual void Start(OnResultCallback on_result_callback) = 0;
};
class UrlRequestFactory {
public:
virtual ~UrlRequestFactory() {}
virtual std::unique_ptr<UrlRequest> CreateUrlRequest(
UrlRequest::Type type,
const std::string& url,
const net::NetworkTrafficAnnotationTag& traffic_annotation) = 0;
};
}
#endif