Add ClientConfig proto, and JSON generation/parsing.
[chromium-blink-merge.git] / components / data_reduction_proxy / proto / client_config.proto
blobf2c796c12be0d75b744efcdd71299ab15e4bb1e4
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 syntax = "proto2";
7 option optimize_for = LITE_RUNTIME;
9 package data_reduction_proxy;
11 // The client configuration information for using the Data Saver service.
12 message ClientConfig {
13   // An opaque per-session key assigned by the server which permits use of the
14   // Data Saver HTTP proxy servers.
15   optional string session_key = 1;
16   // The time at which the secure_session_key is no longer valid. This is
17   // enforced by the Data Saver service, and is provided to permit the client
18   // to request a new session key prior to expiration.
19   optional Timestamp expire_time = 2;
20   // The DataSaver proxy configuration that is valid for the session.
21   optional ProxyConfig proxy_config = 3;
24 // A Timestamp represents a point in time independent of any time zone
25 // or calendar, represented as seconds and fractions of seconds at
26 // nanosecond resolution in UTC Epoch time.
27 message Timestamp {
28   // Represents seconds of UTC time since Unix epoch
29   // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
30   // 9999-12-31T23:59:59Z inclusive.
31   optional int64 seconds = 1;
33   // Non-negative fractions of a second at nanosecond resolution. Negative
34   // second values with fractions must still have non-negative nanos values
35   // that count forward in time. Must be from 0 to 999,999,999
36   // inclusive.
37   optional int32 nanos = 2;
40 // Data Saver proxy configuration.
41 message ProxyConfig {
42   // Provides proxy server information for HTTP URIs.
43   repeated ProxyServer http_proxy_servers = 1;
46 // Configuration information for a specific proxy server.
47 message ProxyServer {
48   // The scheme of the proxy server.
49   enum ProxyScheme {
50     // The proxy scheme is unspecified.
51     UNSPECIFIED = 0;
52     // HTTP
53     HTTP = 1;
54     // HTTPS
55     HTTPS = 2;
56     // HTTPS over QUIC
57     QUIC = 3;
58   }
60   // The scheme for the proxy server.
61   optional ProxyScheme scheme = 1;
62   // The host name for the proxy server.
63   optional string host = 2;
64   // The port number for the proxy server.
65   optional int32 port = 3;
68 // Request object to create a client configuration object.
69 message CreateClientConfigRequest {