Skip to main content

rust_nicepay/services/v2/
request_payout.rs

1use crate::models::v2::approve_payout_model::ApprovePayoutV2Model;
2use crate::models::v2::cancel_payout_model::CancelPayoutV2Model;
3use crate::models::v2::check_balance_payout_model::CheckBalanceV2Model;
4use crate::models::v2::inquiry_payout_model::InquiryPayoutV2Model;
5use crate::models::v2::regist_payout_model::RegistPayoutV2Model;
6use crate::models::v2::reject_payout_model::RejectPayoutV2Model;
7use crate::utils::config::Config;
8use reqwest::{Client, Error, Response};
9use std::future::Future;
10use std::pin::Pin;
11
12pub type MyFuture<T> = Pin<Box<dyn Future<Output = Result<T, Error>> + Send>>;
13
14pub struct PayoutV2Requester<'a> {
15    pub config: &'a Config,
16}
17
18impl<'a> PayoutV2Requester<'a> {
19    pub fn new(config: &'a Config) -> Self {
20        Self { config }
21    }
22
23    pub fn request_regist_payout(&self, req_payout: RegistPayoutV2Model) -> MyFuture<Response> {
24        let base_url = self.config.get_snap_api_base_url();
25        let url = format!("{}/api/direct/v2/requestPayout", base_url);
26
27        let client = Client::new();
28        let fut = async move {
29            let response = client.post(url).json(&req_payout).send().await?;
30            Ok(response)
31        };
32
33        Box::pin(fut)
34    }
35
36    pub fn request_inquiry_payout(&self, req_payout: InquiryPayoutV2Model) -> MyFuture<Response> {
37        let base_url = self.config.get_snap_api_base_url();
38        let url = format!("{}/api/direct/v2/inquiryPayout", base_url);
39
40        let client = Client::new();
41
42        let fut = async move {
43            let response = client.post(url).json(&req_payout).send().await?;
44            Ok(response)
45        };
46
47        Box::pin(fut)
48    }
49
50    pub fn request_approve_payout(&self, req_payout: ApprovePayoutV2Model) -> MyFuture<Response> {
51        let base_url = self.config.get_snap_api_base_url();
52        let url = format!("{}/api/direct/v2/approvePayout", base_url);
53
54        let client = Client::new();
55
56        let fut = async move {
57            let response = client.post(url).json(&req_payout).send().await?;
58            Ok(response)
59        };
60
61        Box::pin(fut)
62    }
63
64    pub fn request_cancel_payout(&self, req_payout: CancelPayoutV2Model) -> MyFuture<Response> {
65        let base_url = self.config.get_snap_api_base_url();
66        let url = format!("{}/api/direct/v2/cancelPayout", base_url);
67
68        let client = Client::new();
69
70        let fut = async move {
71            let response = client.post(url).json(&req_payout).send().await?;
72            Ok(response)
73        };
74
75        Box::pin(fut)
76    }
77
78    pub fn request_reject_payout(&self, req_payout: RejectPayoutV2Model) -> MyFuture<Response> {
79        let base_url = self.config.get_snap_api_base_url();
80        let url = format!("{}/api/direct/v2/rejectPayout", base_url);
81
82        let client = Client::new();
83
84        let fut = async move {
85            let response = client.post(url).json(&req_payout).send().await?;
86            Ok(response)
87        };
88
89        Box::pin(fut)
90    }
91
92    pub fn request_check_balance(&self, req_payout: CheckBalanceV2Model) -> MyFuture<Response> {
93        let base_url = self.config.get_snap_api_base_url();
94        let url = format!("{}/api/direct/v2/balanceInquiry", base_url);
95
96        let client = Client::new();
97
98        let fut = async move {
99            let response = client.post(url).json(&req_payout).send().await?;
100            Ok(response)
101        };
102
103        Box::pin(fut)
104    }
105}