rust_nicepay/services/v2/
request_payout.rs1use 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}