use reqwest::Method;
use crate::client::SearchcraftClient;
use crate::config::Operation;
use crate::error;
use super::types::{MeasureDashboardParams, MeasureEvent, MeasureStatus};
impl SearchcraftClient {
pub async fn get_measure_status(&self) -> error::Result<MeasureStatus> {
self.transport
.request_data(Method::GET, "measure/status", Operation::Read, None::<&()>)
.await
}
pub async fn get_measure_dashboard_summary(
&self,
params: &MeasureDashboardParams,
) -> error::Result<serde_json::Value> {
let path = format!("measure/dashboard/summary{}", params.to_query_string());
self.transport
.request_data(Method::GET, &path, Operation::Read, None::<&()>)
.await
}
pub async fn track_measure_event(&self, event: &MeasureEvent) -> error::Result<String> {
self.transport
.request_data(Method::POST, "measure/event", Operation::Write, Some(event))
.await
}
pub async fn track_measure_batch(&self, events: &[MeasureEvent]) -> error::Result<String> {
let body = BatchMeasureRequest { items: events };
self.transport
.request_data(Method::POST, "measure/batch", Operation::Write, Some(&body))
.await
}
pub async fn get_measure_dashboard_conversion(
&self,
params: &MeasureDashboardParams,
) -> error::Result<serde_json::Value> {
let path = format!("measure/dashboard/conversion{}", params.to_query_string());
self.transport
.request_data(Method::GET, &path, Operation::Read, None::<&()>)
.await
}
pub async fn get_measure_dashboard_usage(
&self,
params: &MeasureDashboardParams,
) -> error::Result<serde_json::Value> {
let path = format!("measure/dashboard/usage{}", params.to_query_string());
self.transport
.request_data(Method::GET, &path, Operation::Read, None::<&()>)
.await
}
}
#[derive(serde::Serialize)]
struct BatchMeasureRequest<'a> {
items: &'a [MeasureEvent],
}