use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use crate::Schema;
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct MessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub http: Option<HTTPMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ws: Option<WebSocketMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kafka: Option<KafkaMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub anypointmq: Option<AnyPointMQMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amqp: Option<AMQPMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub qmqp1: Option<AMQP1MessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt: Option<MQTTMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt5: Option<MQTT5MessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nats: Option<NATSMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jms: Option<JMSMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sns: Option<SNSMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub solace: Option<SolaceMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sqs: Option<SQSMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stomp: Option<STOMPMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub redis: Option<RedisMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mercure: Option<MercureMessageBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ibmmq: Option<IBMMQMessageBinding>,
#[serde(flatten)]
pub extensions: IndexMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct HTTPMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct WebSocketMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct KafkaMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AnyPointMQMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQPMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub content_encoding: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQP1MessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MQTTMessageBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MQTT5MessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct NATSMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct JMSMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SNSMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SolaceMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SQSMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct STOMPMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RedisMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MercureMessageBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IBMMQMessageBinding {
#[serde(rename = "type")]
pub typ: Option<String>,
}