1 use reqwest::{RequestBuilder, StatusCode};
2 use serde_json::Value;
3 use smbcloud_model::error_codes::{ErrorCode, ErrorResponse};
4 use smbcloud_network::network::{check_internet_connection, parse_error_response};
5
6 pub(crate) async fn request_empty(builder: RequestBuilder) -> Result<(), ErrorResponse> {
7 if !check_internet_connection().await {
8 return Err(ErrorResponse::Error {
9 error_code: ErrorCode::NetworkError,
10 message: "No internet connection. Please check your network settings and try again."
11 .to_string(),
12 });
13 }
14
15 let response = builder.send().await.map_err(|_| ErrorResponse::Error {
16 error_code: ErrorCode::NetworkError,
17 message: ErrorCode::NetworkError.message(None).to_string(),
18 })?;
19
20 match response.status() {
21 StatusCode::OK | StatusCode::CREATED | StatusCode::NO_CONTENT => Ok(()),
22 _ => match parse_error_response::<Value>(response).await {
23 Ok(_) => Err(ErrorResponse::Error {
24 error_code: ErrorCode::ParseError,
25 message: ErrorCode::ParseError.message(None).to_string(),
26 }),
27 Err(error_response) => Err(error_response),
28 },
29 }
30 }