use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum JobState {
StateUnspecified,
Enabled,
Paused,
Disabled,
UpdateFailed,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum HttpMethod {
HttpMethodUnspecified,
Post,
Get,
Head,
Put,
Delete,
Patch,
Options,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Job {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub schedule: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_zone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<JobState>,
#[serde(skip_serializing_if = "Option::is_none")]
pub http_target: Option<HttpTarget>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pubsub_target: Option<PubsubTarget>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_engine_http_target: Option<AppEngineHttpTarget>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retry_config: Option<RetryConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attempt_deadline: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_attempt_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub schedule_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_update_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<JobStatus>,
}
impl Job {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-job".into(),
description: Some("test-description".into()),
schedule: Some("test-schedule".into()),
time_zone: Some("test-time_zone".into()),
state: Some(JobState::StateUnspecified),
http_target: Some(HttpTarget::fixture()),
pubsub_target: Some(PubsubTarget::fixture()),
app_engine_http_target: Some(AppEngineHttpTarget::fixture()),
retry_config: Some(RetryConfig::fixture()),
attempt_deadline: Some("test-attempt_deadline".into()),
last_attempt_time: Some("test-last_attempt_time".into()),
schedule_time: Some("test-schedule_time".into()),
user_update_time: Some("test-user_update_time".into()),
status: Some(JobStatus::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HttpTarget {
#[serde(skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub http_method: Option<HttpMethod>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub headers: HashMap<String, String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
serialize_with = "crate::serde_base64::serialize_base64_opt",
deserialize_with = "crate::serde_base64::deserialize_base64_opt"
)]
pub body: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oauth_token: Option<OAuthToken>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oidc_token: Option<OidcToken>,
}
impl HttpTarget {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
uri: Some("test-uri".into()),
http_method: Some(HttpMethod::HttpMethodUnspecified),
headers: Default::default(),
body: Some("test-body".into()),
oauth_token: Some(OAuthToken::fixture()),
oidc_token: Some(OidcToken::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OAuthToken {
#[serde(skip_serializing_if = "Option::is_none")]
pub service_account_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
}
impl OAuthToken {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
service_account_email: Some("test-service_account_email".into()),
scope: Some("test-scope".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OidcToken {
#[serde(skip_serializing_if = "Option::is_none")]
pub service_account_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audience: Option<String>,
}
impl OidcToken {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
service_account_email: Some("test-service_account_email".into()),
audience: Some("test-audience".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PubsubTarget {
#[serde(skip_serializing_if = "Option::is_none")]
pub topic_name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
serialize_with = "crate::serde_base64::serialize_base64_opt",
deserialize_with = "crate::serde_base64::deserialize_base64_opt"
)]
pub data: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub attributes: HashMap<String, String>,
}
impl PubsubTarget {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
topic_name: Some("test-topic_name".into()),
data: Some("test-data".into()),
attributes: Default::default(),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AppEngineHttpTarget {
#[serde(skip_serializing_if = "Option::is_none")]
pub app_engine_routing: Option<AppEngineRouting>,
#[serde(skip_serializing_if = "Option::is_none")]
pub relative_uri: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub headers: HashMap<String, String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
serialize_with = "crate::serde_base64::serialize_base64_opt",
deserialize_with = "crate::serde_base64::deserialize_base64_opt"
)]
pub body: Option<String>,
}
impl AppEngineHttpTarget {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
app_engine_routing: Some(AppEngineRouting::fixture()),
relative_uri: Some("test-relative_uri".into()),
headers: Default::default(),
body: Some("test-body".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AppEngineRouting {
#[serde(skip_serializing_if = "Option::is_none")]
pub service: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub host: Option<String>,
}
impl AppEngineRouting {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
service: Some("test-service".into()),
version: Some("test-version".into()),
instance: Some("test-instance".into()),
host: Some("test-host".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RetryConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub retry_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_retry_duration: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_backoff_duration: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_backoff_duration: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_doublings: Option<i32>,
}
impl RetryConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
retry_count: Some(100),
max_retry_duration: Some("test-max_retry_duration".into()),
min_backoff_duration: Some("test-min_backoff_duration".into()),
max_backoff_duration: Some("test-max_backoff_duration".into()),
max_doublings: Some(100),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JobStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
impl JobStatus {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
code: Some(100),
message: Some("test-message".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SchedulerEmpty {}
impl SchedulerEmpty {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PauseJobRequest {}
impl PauseJobRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResumeJobRequest {}
impl ResumeJobRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RunJobRequest {}
impl RunJobRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListJobsResponse {
#[serde(default)]
pub jobs: Vec<Job>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl ListJobsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
jobs: vec![],
next_page_token: None,
}
}
}