1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//! This library generated from [Google API][`googleapis`] using [tonic-build][`tonic-build`].
//!
//! ## Example
//! The complete code can be found [here][`spanner-admin-example`].
//!
//! Cargo.toml:
//! ```toml
//! [dependencies]
//! googapis = { version = "0.5", features = ["google-spanner-admin-database-v1"] }
//! gouth = { version = "0.2" }
//! tonic = { version = "0.5", features = ["tls"] }
//! prost = "0.8"
//! prost-types = "0.8"
//! tokio = { version = "1.9", features = ["rt-multi-thread", "time", "fs", "macros"] }
//! ```
//!
//! main.rs:
//! ```ignore
//! use googapis::{
//! google::spanner::admin::database::v1::{
//! database_admin_client::DatabaseAdminClient, ListDatabasesRequest,
//! },
//! CERTIFICATES,
//! };
//! use gouth::Token;
//! use tonic::{
//! metadata::MetadataValue,
//! transport::{Certificate, Channel, ClientTlsConfig},
//! Request,
//! };
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let project = std::env::var("PROJECT")?;
//! let instance = std::env::var("INSTANCE")?;
//! let token = Token::new()?;
//!
//! let tls_config = ClientTlsConfig::new()
//! .ca_certificate(Certificate::from_pem(CERTIFICATES))
//! .domain_name("spanner.googleapis.com");
//!
//! let channel = Channel::from_static("https://spanner.googleapis.com")
//! .tls_config(tls_config)?
//! .connect()
//! .await?;
//!
//! let mut service = DatabaseAdminClient::with_interceptor(channel, move |mut req: Request<()>| {
//! let token = &*token.header_value().unwrap();
//! let meta = MetadataValue::from_str(token).unwrap();
//! req.metadata_mut().insert("authorization", meta);
//! Ok(req)
//! });
//!
//! let response = service
//! .list_databases(Request::new(ListDatabasesRequest {
//! parent: format!("projects/{}/instances/{}", project, instance),
//! page_size: 100,
//! ..Default::default()
//! }))
//! .await?;
//!
//! println!("RESPONSE={:?}", response);
//!
//! Ok(())
//! }
//! ```
//!
//! [`googleapis`]: https://github.com/googleapis/googleapis
//! [`tonic-build`]: https://github.com/hyperium/tonic/tree/master/tonic-build
//! [`spanner-admin-example`]: https://github.com/mechiru/googapis/tree/master/examples/spanner-admin
/// The minimal google root set downloaded from https://pki.goog/roots.pem.
///
/// # Example
/// ```no_run
/// # use tonic::transport::{Certificate, ClientTlsConfig};
/// # use googapis::CERTIFICATES;
/// let tls_config = ClientTlsConfig::new()
/// .ca_certificate(Certificate::from_pem(CERTIFICATES))
/// .domain_name("spanner.googleapis.com");
/// ````
pub const CERTIFICATES: & = include_bytes!;
include!;