use std::collections::HashMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::protocol::TriggerAction;
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct AuthInput {
pub headers: HashMap<String, String>,
pub query_params: HashMap<String, Vec<String>>,
pub ip_address: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct AuthResult {
#[serde(default)]
pub allowed_functions: Vec<String>,
#[serde(default)]
pub forbidden_functions: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_trigger_types: Option<Vec<String>>,
#[serde(default = "default_true")]
pub allow_trigger_type_registration: bool,
#[serde(default = "default_true")]
pub allow_function_registration: bool,
#[serde(default = "default_context")]
pub context: Value,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_registration_prefix: Option<String>,
}
fn default_true() -> bool {
true
}
fn default_context() -> Value {
Value::Object(Default::default())
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct MiddlewareFunctionInput {
pub function_id: String,
pub payload: Value,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<TriggerAction>,
pub context: Value,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct OnTriggerTypeRegistrationInput {
pub trigger_type_id: String,
pub description: String,
pub context: Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
pub struct OnTriggerTypeRegistrationResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trigger_type_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct OnTriggerRegistrationInput {
pub trigger_id: String,
pub trigger_type: String,
pub function_id: String,
pub config: Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
pub context: Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
pub struct OnTriggerRegistrationResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trigger_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trigger_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct OnFunctionRegistrationInput {
pub function_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
pub context: Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
pub struct OnFunctionRegistrationResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
}