| // 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 <memory> |
| #include <string> |
| |
| #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<google::protobuf::MessageLite> 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_ |