use crate::models;
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
#[serde_as]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GcpServiceAccountKeyInfo {
#[serde_as(as = "serde_with::base64::Base64")]
#[serde(rename = "serviceAccountCredentials")]
pub service_account_credentials: Vec<u8>,
#[serde(rename = "projectID")]
pub project_id: String,
#[serde(rename = "location")]
pub location: String,
#[serde(rename = "keyringID")]
pub keyring_id: String,
#[serde(rename = "keyID")]
pub key_id: String,
#[serde(rename = "providerName", skip_serializing_if = "Option::is_none")]
pub provider_name: Option<ProviderName>,
}
impl GcpServiceAccountKeyInfo {
pub fn new(service_account_credentials: Vec<u8>, project_id: String, location: String, keyring_id: String, key_id: String) -> GcpServiceAccountKeyInfo {
GcpServiceAccountKeyInfo {
service_account_credentials,
project_id,
location,
keyring_id,
key_id,
provider_name: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ProviderName {
#[serde(rename = "gcp_sa")]
GcpSa,
}
impl Default for ProviderName {
fn default() -> ProviderName {
Self::GcpSa
}
}