38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
use std::collections::BTreeMap;
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use serde_json::Value;
|
|
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
|
|
pub struct GrpcRequest {
|
|
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
|
pub headers: BTreeMap<String, String>,
|
|
pub body: Value,
|
|
pub timeout_ms: u64,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
pub struct GrpcResponse {
|
|
pub status_code: u16,
|
|
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
|
pub headers: BTreeMap<String, String>,
|
|
pub body: Value,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
|
|
pub struct GrpcWindowRequest {
|
|
#[serde(flatten)]
|
|
pub request: GrpcRequest,
|
|
pub window_duration_ms: u64,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub max_items: Option<u32>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
pub struct GrpcWindowResponse {
|
|
pub status_code: u16,
|
|
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
|
pub headers: BTreeMap<String, String>,
|
|
pub body: Value,
|
|
}
|