use crate::client::{path_escape, Query};
use crate::error::Result;
use crate::types::{
CardTokenizeRequest, CardTokenizeResponse, DeleteSavedCardResponse, ListSavedCardsResponse,
};
use std::sync::Arc;
pub struct TokenizationModule {
client: Arc<crate::client::TapsilatClient>,
}
impl TokenizationModule {
pub fn new(client: Arc<crate::client::TapsilatClient>) -> Self {
Self { client }
}
pub fn tokenize_card(&self, request: CardTokenizeRequest) -> Result<CardTokenizeResponse> {
self.client
.request("POST", "tokenization/card/tokenize", Some(&request))
}
pub fn list_saved_cards(&self, page: u32, per_page: u32) -> Result<ListSavedCardsResponse> {
let endpoint = Query::new()
.set("page", page)
.set("per_page", per_page)
.append_to("tokenization/card/list");
self.client.request::<(), _>("GET", &endpoint, None)
}
pub fn delete_saved_card(&self, id: &str) -> Result<DeleteSavedCardResponse> {
let endpoint = format!("tokenization/card/{}", path_escape(id));
self.client.request::<(), _>("DELETE", &endpoint, None)
}
}