mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-21 16:21:25 +02:00
Better error handling for file not found
This commit is contained in:
@@ -7,15 +7,15 @@ use std::sync::Arc;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use http::{HeaderMap, HeaderName, HeaderValue, Method};
|
|
||||||
use http::header::{ACCEPT, USER_AGENT};
|
use http::header::{ACCEPT, USER_AGENT};
|
||||||
|
use http::{HeaderMap, HeaderName, HeaderValue, Method};
|
||||||
use log::{error, info, warn};
|
use log::{error, info, warn};
|
||||||
use reqwest::{multipart, Url};
|
|
||||||
use reqwest::redirect::Policy;
|
use reqwest::redirect::Policy;
|
||||||
|
use reqwest::{multipart, Url};
|
||||||
use sqlx::types::{Json, JsonValue};
|
use sqlx::types::{Json, JsonValue};
|
||||||
use tauri::{Manager, Window};
|
use tauri::{Manager, Window};
|
||||||
use tokio::sync::oneshot;
|
use tokio::sync::oneshot;
|
||||||
use tokio::sync::watch::{Receiver};
|
use tokio::sync::watch::Receiver;
|
||||||
|
|
||||||
use crate::{models, render, response_err};
|
use crate::{models, render, response_err};
|
||||||
|
|
||||||
@@ -245,12 +245,21 @@ pub async fn send_http_request(
|
|||||||
}
|
}
|
||||||
request_builder = request_builder.form(&form_params);
|
request_builder = request_builder.form(&form_params);
|
||||||
} else if body_type == "binary" && request_body.contains_key("filePath") {
|
} else if body_type == "binary" && request_body.contains_key("filePath") {
|
||||||
let file_path = request_body.get("filePath").unwrap().as_str().unwrap();
|
let file_path = request_body
|
||||||
request_builder = request_builder.body(
|
.get("filePath")
|
||||||
fs::read(file_path)
|
.ok_or("filePath not set")?
|
||||||
.map_err(|e| e.to_string())
|
.as_str()
|
||||||
.expect("Failed to read file"),
|
.unwrap_or_default();
|
||||||
);
|
|
||||||
|
match fs::read(file_path).map_err(|e| e.to_string()) {
|
||||||
|
Ok(f) => {
|
||||||
|
request_builder = request_builder.body(f);
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
return response_err(response, e, window).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if body_type == "multipart/form-data" && request_body.contains_key("form") {
|
} else if body_type == "multipart/form-data" && request_body.contains_key("form") {
|
||||||
let mut multipart_form = multipart::Form::new();
|
let mut multipart_form = multipart::Form::new();
|
||||||
if let Some(form_definition) = request_body.get("form") {
|
if let Some(form_definition) = request_body.get("form") {
|
||||||
@@ -314,11 +323,11 @@ pub async fn send_http_request(
|
|||||||
let start = std::time::Instant::now();
|
let start = std::time::Instant::now();
|
||||||
|
|
||||||
let (resp_tx, resp_rx) = oneshot::channel();
|
let (resp_tx, resp_rx) = oneshot::channel();
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let _ = resp_tx.send(client.execute(sendable_req).await);
|
let _ = resp_tx.send(client.execute(sendable_req).await);
|
||||||
});
|
});
|
||||||
|
|
||||||
let raw_response = tokio::select! {
|
let raw_response = tokio::select! {
|
||||||
Ok(r) = resp_rx => {r}
|
Ok(r) = resp_rx => {r}
|
||||||
_ = cancel_rx.changed() => {
|
_ = cancel_rx.changed() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user