use crate::error::Error;
use crate::http::HttpClient;
use crate::types::common::RequestOptions;
use crate::types::scenarios::{
CreateScenarioRequest, CreateScenarioResponse, GetScenarioResponse, ListScenariosResponse,
UpdateScenarioRequest, UpdateScenarioResponse, VerifyScenarioRequest, VerifyScenarioResponse,
};
#[derive(Debug, Clone)]
pub struct ScenariosClient {
http: HttpClient,
}
impl ScenariosClient {
pub(crate) fn new(http: HttpClient) -> Self {
Self { http }
}
pub async fn create(
&self,
request: CreateScenarioRequest,
options: Option<&RequestOptions>,
) -> Result<CreateScenarioResponse, Error> {
self.http.post("/scenarios", &request, options).await
}
pub async fn list(
&self,
options: Option<&RequestOptions>,
) -> Result<ListScenariosResponse, Error> {
self.http.get("/scenarios", None, options).await
}
pub async fn get(
&self,
id: &str,
options: Option<&RequestOptions>,
) -> Result<GetScenarioResponse, Error> {
let path = format!("/scenarios/{}", encode(id));
self.http.get(&path, None, options).await
}
pub async fn update(
&self,
id: &str,
request: UpdateScenarioRequest,
options: Option<&RequestOptions>,
) -> Result<UpdateScenarioResponse, Error> {
let path = format!("/scenarios/{}", encode(id));
self.http.patch(&path, &request, options).await
}
pub async fn verify(
&self,
id: &str,
request: VerifyScenarioRequest,
options: Option<&RequestOptions>,
) -> Result<VerifyScenarioResponse, Error> {
let path = format!("/scenarios/{}/verify", encode(id));
self.http.post(&path, &request, options).await
}
}
fn encode(s: &str) -> String {
url::form_urlencoded::byte_serialize(s.as_bytes()).collect()
}