use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ProjectState {
StateUnspecified,
Active,
DeleteRequested,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Project {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<ProjectState>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub labels: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delete_time: Option<String>,
}
impl Project {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-project".into(),
project_id: Some("test-project_id".into()),
display_name: Some("test-display_name".into()),
state: Some(ProjectState::StateUnspecified),
parent: Some("test-parent".into()),
labels: Default::default(),
create_time: Some("test-create_time".into()),
etag: Some("test-etag".into()),
delete_time: Some("test-delete_time".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IamPolicy {
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i32>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub bindings: Vec<IamBinding>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub audit_configs: Vec<AuditConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
}
impl IamPolicy {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
version: Some(100),
bindings: vec![],
audit_configs: vec![],
etag: Some("test-etag".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IamBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub members: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition: Option<IamCondition>,
}
impl IamBinding {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
role: Some("test-role".into()),
members: vec![],
condition: Some(IamCondition::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct IamCondition {
#[serde(skip_serializing_if = "Option::is_none")]
pub expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl IamCondition {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
expression: Some("test-expression".into()),
title: Some("test-title".into()),
description: Some("test-description".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub service: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub audit_log_configs: Vec<AuditLogConfig>,
}
impl AuditConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
service: Some("test-service".into()),
audit_log_configs: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditLogConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub log_type: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub exempted_members: Vec<String>,
}
impl AuditLogConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
log_type: Some("test-log_type".into()),
exempted_members: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ProjectsLro {
pub name: String,
#[serde(default)]
pub done: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
}
impl ProjectsLro {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self::fixture_done()
}
#[cfg(any(test, feature = "test-support"))]
pub fn fixture_pending() -> Self {
Self {
name: "operation-pending".into(),
done: false,
..Default::default()
}
}
#[cfg(any(test, feature = "test-support"))]
pub fn fixture_done() -> Self {
Self {
name: "operation-done".into(),
done: true,
..Default::default()
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetIamPolicyRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<GetPolicyOptions>,
}
impl GetIamPolicyRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
options: Some(GetPolicyOptions::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetPolicyOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested_policy_version: Option<i32>,
}
impl GetPolicyOptions {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
requested_policy_version: Some(100),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SetIamPolicyRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub policy: Option<IamPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_mask: Option<String>,
}
impl SetIamPolicyRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
policy: Some(IamPolicy::fixture()),
update_mask: Some("test-update_mask".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TestIamPermissionsRequest {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub permissions: Vec<String>,
}
impl TestIamPermissionsRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
permissions: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TestIamPermissionsResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub permissions: Vec<String>,
}
impl TestIamPermissionsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
permissions: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MoveProjectRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_parent: Option<String>,
}
impl MoveProjectRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
destination_parent: Some("test-destination_parent".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UndeleteProjectRequest {}
impl UndeleteProjectRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListProjectsResponse {
#[serde(default)]
pub projects: Vec<Project>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl ListProjectsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
projects: vec![],
next_page_token: None,
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SearchProjectsResponse {
#[serde(default)]
pub projects: Vec<Project>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl SearchProjectsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
projects: vec![],
next_page_token: None,
}
}
}