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
#[macro_use(Deserialize, Serialize)]
extern crate serde;
#[cfg(feature = "v1")]
mod v1;
#[cfg(feature = "v1")]
pub use crate::v1::*;
pub mod error;
mod response;
pub mod signed_url;
pub mod signing;
pub mod types;
pub mod util;
// Reexport the http crate since everything this crate does
// is put in terms of http request/response
pub use http;
pub use error::Error;
pub use response::{ApiResponse, Response};
pub use types::{BucketName, ObjectId, ObjectName};
/// The [oauth scopes](https://cloud.google.com/storage/docs/authentication)
/// that pertain to Google Cloud Storage.
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Scopes {
/// Only allows access to read data, including listing buckets.
ReadOnly,
/// Allows access to read and change data, but not metadata like IAM policies.
ReadWrite,
/// Allows full control over data, including the ability to modify IAM policies.
FullControl,
/// View your data across Google Cloud Platform services.
/// For Cloud Storage, this is the same as `devstorage.read-only`.
CloudPlatformReadOnly,
/// View and manage data across all Google Cloud Platform services.
/// For Cloud Storage, this is the same as `devstorage.full-control`.
CloudPlatform,
}
impl AsRef<str> for Scopes {
fn as_ref(&self) -> &str {
match *self {
Scopes::ReadOnly => "https://www.googleapis.com/auth/devstorage.read_only",
Scopes::ReadWrite => "https://www.googleapis.com/auth/devstorage.read_write",
Scopes::FullControl => "https://www.googleapis.com/auth/devstorage.full_control",
Scopes::CloudPlatformReadOnly => {
"https://www.googleapis.com/auth/cloud-platform.read-only"
}
Scopes::CloudPlatform => "https://www.googleapis.com/auth/cloud-platform",
}
}
}