use crate::error::Result;
use crate::types::*;
use std::sync::Arc;
pub struct OrganizationModule {
client: Arc<crate::client::TapsilatClient>,
}
impl OrganizationModule {
pub fn new(client: Arc<crate::client::TapsilatClient>) -> Self {
Self { client }
}
pub fn get_settings(&self) -> Result<serde_json::Value> {
self.client
.make_request::<()>("GET", "organization/settings", None)
}
pub fn get_callback(&self) -> Result<serde_json::Value> {
self.client
.make_request::<()>("GET", "organization/callback", None)
}
pub fn update_callback(&self, request: CallbackURLDTO) -> Result<serde_json::Value> {
self.client
.make_request("PATCH", "organization/callback", Some(&request))
}
pub fn create_business(&self, request: OrgCreateBusinessRequest) -> Result<serde_json::Value> {
self.client
.make_request("POST", "organization/business/create", Some(&request))
}
pub fn get_currencies(&self) -> Result<serde_json::Value> {
self.client
.make_request::<()>("GET", "organization/currencies", None)
}
pub fn get_limit_user(&self, user_id: &str) -> Result<serde_json::Value> {
let endpoint = format!("organization/limit/user?user_id={}", user_id);
self.client.make_request::<()>("GET", &endpoint, None)
}
pub fn set_limit_user(&self, request: SetLimitUserRequest) -> Result<serde_json::Value> {
self.client
.make_request("POST", "organization/limit/user", Some(&request))
}
pub fn get_limits(&self) -> Result<serde_json::Value> {
self.client
.make_request::<()>("GET", "organization/limits", None)
}
pub fn list_vpos(&self, currency_id: &str) -> Result<serde_json::Value> {
let payload = serde_json::json!({ "currency_id": currency_id });
self.client
.make_request("POST", "organization/list-vpos", Some(&payload))
}
pub fn get_meta(&self, name: &str) -> Result<serde_json::Value> {
let endpoint = format!("organization/meta/{}", name);
self.client.make_request::<()>("GET", &endpoint, None)
}
pub fn get_scopes(&self) -> Result<serde_json::Value> {
self.client
.make_request::<()>("GET", "organization/scopes", None)
}
pub fn get_suborganizations(&self, page: u32, per_page: u32) -> Result<serde_json::Value> {
let endpoint = format!(
"organization/suborganizations?page={}&per_page={}",
page, per_page
);
self.client.make_request::<()>("GET", &endpoint, None)
}
pub fn create_user(&self, request: OrgCreateUserReq) -> Result<serde_json::Value> {
self.client
.make_request("POST", "organization/user/create", Some(&request))
}
pub fn verify_user(&self, user_id: &str) -> Result<serde_json::Value> {
let payload = serde_json::json!({ "user_id": user_id });
self.client
.make_request("POST", "organization/user/verify", Some(&payload))
}
pub fn verify_user_mobile(&self, user_id: &str) -> Result<serde_json::Value> {
let payload = serde_json::json!({ "user_id": user_id });
self.client
.make_request("POST", "organization/user/verify-mobile", Some(&payload))
}
}