rust_nicepay/services/v2/
request_direct.rs1use crate::models::v2::cancel_direct_model::CancelDirectV2Model;
2use crate::models::v2::inquiry_direct_model::InquiryDirectV2Model;
3use crate::models::v2::payment_direct_model::PaymentDirectV2Model;
4use crate::models::v2::regist_direct_model::RegistDirectV2Model;
5use crate::utils::config::Config;
6use reqwest::{Client, Error, Response};
7use std::future::Future;
8use std::pin::Pin;
9
10pub type MyFuture<T> = Pin<Box<dyn Future<Output = Result<T, Error>> + Send>>;
11
12pub struct DirectV2Requester<'a> {
13 pub config: &'a Config,
14}
15
16impl<'a> DirectV2Requester<'a> {
17 pub fn new(config: &'a Config) -> Self {
18 Self { config }
19 }
20
21 pub fn request_regist(&self, req_direct: RegistDirectV2Model) -> MyFuture<Response> {
22 let base_url = self.config.get_snap_api_base_url();
23 let url = format!("{}/direct/v2/registration", base_url);
24
25 let client = Client::new();
26 let fut = async move {
27 let response = client.post(url).json(&req_direct).send().await?;
28 Ok(response)
29 };
30
31 Box::pin(fut)
32 }
33
34 pub fn request_inquiry(&self, req_direct: InquiryDirectV2Model) -> MyFuture<Response> {
35 let base_url = self.config.get_snap_api_base_url();
36 let url = format!("{}/direct/v2/inquiry", base_url);
37
38 let client = Client::new();
39
40 let fut = async move {
41 let response = client.post(url).json(&req_direct).send().await?;
42 Ok(response)
43 };
44
45 Box::pin(fut)
46 }
47
48 pub fn request_payment(&self, req_direct: PaymentDirectV2Model) -> MyFuture<Response> {
49 let base_url = self.config.get_snap_api_base_url();
50 let url = format!("{}/direct/v2/payment", base_url);
51
52 let client = Client::new();
53
54 let fut = async move {
55 let response = client.post(url).json(&req_direct).send().await?;
56 Ok(response)
57 };
58
59 Box::pin(fut)
60 }
61
62 pub fn request_cancel(&self, req_direct: CancelDirectV2Model) -> MyFuture<Response> {
63 let base_url = self.config.get_snap_api_base_url();
64 let url = format!("{}/direct/v2/cancel", base_url);
65
66 let client = Client::new();
67
68 let fut = async move {
69 let response = client.post(url).json(&req_direct).send().await?;
70 Ok(response)
71 };
72
73 Box::pin(fut)
74 }
75}