// Copyright 2020 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 REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_ #define REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_ #include #include #include "net/traffic_annotation/network_traffic_annotation.h" namespace google { namespace protobuf { class MessageLite; } // namespace protobuf } // namespace google namespace remoting { // Common configurations for unary and stream protobuf http requests. Caller // needs to set all fields in this struct unless otherwise documented. struct ProtobufHttpRequestConfig { explicit ProtobufHttpRequestConfig( const net::NetworkTrafficAnnotationTag& traffic_annotation); ~ProtobufHttpRequestConfig(); // Runs DCHECK's on the fields to make sure all fields have been set up. void Validate() const; const net::NetworkTrafficAnnotationTag traffic_annotation; std::unique_ptr request_message; std::string path; bool authenticated = true; // Optional. Only needed when the request requires an API key. std::string api_key; }; } // namespace remoting #endif // REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_