Skip to main content

gcloud_sdk/
lib.rs

1//! # Google Cloud SDK for Rust
2//!
3//! Library provides all available APIs generated based:
4//! - on proto interfaces for gRPC;
5//! - OpenAPI spec for REST APIs not available as gRPC;
6//!
7//! The library also provides and easy-to-use client API for both gRPC and REST,
8//! that supports Google Authentication natively.
9//!
10//! ## gRPC example
11//! ```ignore
12//!
13//!     let firestore_client: GoogleApi<FirestoreClient<GoogleAuthMiddleware>> =
14//!        GoogleApi::from_function(
15//!            FirestoreClient::new,
16//!            "https://firestore.googleapis.com",
17//!            // cloud resource prefix: used only for some of the APIs (such as Firestore)
18//!            Some(cloud_resource_prefix.clone()),
19//!        )
20//!        .await?;
21//!
22//!     let response = firestore_client
23//!         .get()
24//!         .list_documents(tonic::Request::new(ListDocumentsRequest {
25//!             parent: format!("{}/documents", cloud_resource_prefix),
26//!             ..Default::default()
27//!         }))
28//!         .await?;
29//!
30//! ```
31//! ## REST example
32//! ```ignore
33//!
34//! let google_rest_client = gcloud_sdk::GoogleRestApi::new().await?;
35//!
36//! let response = gcloud_sdk::google_rest_apis::storage::buckets_api::storage_buckets_list(
37//!     &google_rest_client.create_google_storage_config().await?,
38//!     gcloud_sdk::google_rest_apis::storage::buckets_api::StoragePeriodBucketsPeriodListParams {
39//!         project: google_project_id,
40//!         ..Default::default()
41//!     }
42//! ).await?;
43//!
44//! ```
45//!
46//! Complete examples available on [github](https://github.com/abdolence/gcloud-sdk-rs/tree/master/src/examples).
47//!
48
49#![allow(unexpected_cfgs)]
50mod apis;
51pub use apis::*;
52
53#[cfg(feature = "axum")]
54mod axum_layer;
55#[cfg(feature = "axum")]
56pub use axum_layer::{VerifyIdToken, VerifyIdTokenLayer};
57pub mod error;
58#[cfg(feature = "id-token-verify")]
59pub mod id_token_verify;
60mod jwt_crypto;
61mod token_source;
62pub use middleware::GoogleAuthMiddlewareLayer;
63pub use token_source::auth_token_generator::GoogleAuthTokenGenerator;
64pub use token_source::id_token::{IdTokenAudience, IdTokenSource, ServiceAccountEmail};
65pub use token_source::metadata::Metadata as GceMetadataClient;
66pub use token_source::{BoxSource, ExternalJwtFunctionSource, Source, Token, TokenSourceType};
67
68mod api_client;
69pub use api_client::*;
70
71mod middleware;
72
73#[cfg(feature = "reqwest-middleware")]
74mod reqwest_auth_middleware;
75#[cfg(feature = "reqwest-middleware")]
76pub use reqwest_auth_middleware::GoogleAuthReqwestMiddleware;
77
78#[cfg(test)]
79mod test_support;
80
81pub mod proto_ext;
82
83#[cfg(feature = "rest")]
84mod rest_apis;
85
86#[cfg(feature = "rest")]
87pub use rest_apis::*;
88
89pub const GCLOUD_SDK_USER_AGENT: &str = concat!("gcloud-sdk-rs/v", env!("CARGO_PKG_VERSION"));
90
91// Re-exports
92pub use hyper::HeaderMap;
93pub use prost;
94pub use prost_types;
95pub use secret_vault_value::SecretValue;
96pub use tonic;