use reqwest::{header::HeaderMap, Method};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub enum PublishRequestUrl {
Url(reqwest::Url),
Topic(String),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct QstashResponse {
pub message_id: Option<String>,
pub url: Option<String>,
pub error: Option<String>,
pub deduplicated: Option<bool>,
}
pub struct PublishOptions {
pub headers: Option<HeaderMap>,
pub delay: Option<u32>,
pub not_before: Option<u32>,
pub deduplication_id: Option<String>,
pub content_based_deduplication: Option<bool>,
pub retries: Option<u32>,
pub callback: Option<String>,
pub method: Option<Method>,
}
#[derive(Debug, Clone)]
pub struct PublishRequest<T>
where
T: Into<reqwest::Body>,
{
pub url: PublishRequestUrl,
pub body: Option<T>,
pub headers: Option<HeaderMap>,
pub delay: Option<u32>,
pub not_before: Option<u32>,
pub deduplication_id: Option<String>,
pub content_based_deduplication: Option<bool>,
pub retries: Option<u32>,
pub callback: Option<String>,
pub method: Option<Method>,
}
impl<T: Into<reqwest::Body>> PublishRequest<T> {
pub fn new(url: PublishRequestUrl) -> Self {
Self {
url,
body: None,
headers: None,
delay: None,
not_before: None,
deduplication_id: None,
content_based_deduplication: None,
retries: None,
callback: None,
method: None,
}
}
}