rust_anticaptcha/core/
request_interface.rs1use reqwest::Response;
2use serde_json::Value;
3
4use super::constants::BASE_REQUEST_URL;
5use super::enums::EnpPostfix;
6use super::structs::{CreateTaskRequest, ResultTaskRequest};
7
8pub struct RequestInterface {
10 request_client: reqwest::Client,
11}
12impl Default for RequestInterface {
13 fn default() -> Self {
14 RequestInterface::new()
15 }
16}
17
18impl RequestInterface {
19 pub fn new() -> Self {
21 RequestInterface {
22 request_client: reqwest::Client::new(),
23 }
24 }
25
26 pub async fn send_get_request(&self, url: &String) -> Result<Response, String> {
28 let response = self.request_client.get(url).send().await.unwrap();
29
30 if response.status().eq(&200) {
31 Ok(response)
32 } else {
33 Err(format!(
34 "Invalid request to {}, status code - {} response - {}",
35 url,
36 response.status(),
37 response.text().await.unwrap()
38 ))
39 }
40 }
41
42 pub async fn send_post_request(
44 &self,
45 payload: &Value,
46 url: &String,
47 ) -> Result<Response, String> {
48 let response = self.request_client.post(url).json(payload).send().await.unwrap();
49
50 if response.status().eq(&200) {
51 Ok(response)
52 } else {
53 Err(format!(
54 "Invalid request to {}, status code - {} response - {}",
55 url,
56 response.status(),
57 response.text().await.unwrap()
58 ))
59 }
60 }
61
62 pub async fn send_create_task_request(
64 &self,
65 payload: &CreateTaskRequest,
66 enp_postfix: &EnpPostfix,
67 ) -> Result<Value, String> {
68 let req_url = BASE_REQUEST_URL.to_string() + &enp_postfix.to_string();
69
70 let response = self
71 .request_client
72 .post(&req_url)
73 .json(payload)
74 .send()
75 .await
76 .unwrap();
77
78 if response.status().eq(&200) {
79 Ok(response.json().await.unwrap())
80 } else {
81 Err(format!(
82 "Invalid request to {}, status code - {} response - {}",
83 req_url,
84 response.status(),
85 response.text().await.unwrap()
86 ))
87 }
88 }
89
90 pub async fn send_get_result_request(
92 &self,
93 payload: &ResultTaskRequest,
94 enp_postfix: &EnpPostfix,
95 ) -> Result<Value, String> {
96 let req_url = BASE_REQUEST_URL.to_string() + &enp_postfix.to_string();
97
98 let response = self
99 .request_client
100 .post(&req_url)
101 .json(payload)
102 .send()
103 .await
104 .unwrap();
105
106 if response.status().eq(&200) {
107 Ok(response.json().await.unwrap())
108 } else {
109 Err(format!(
110 "Invalid request to {}, status code - {} response - {}",
111 req_url,
112 response.status(),
113 response.text().await.unwrap()
114 ))
115 }
116 }
117}