Correctify search_message

Fixes Search Messages #258
This commit is contained in:
bitfl0wer 2023-08-22 19:23:27 +02:00
parent 582c5347e6
commit 9302fbd42a
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
1 changed files with 12 additions and 12 deletions

View File

@ -1,7 +1,7 @@
use http::header::CONTENT_DISPOSITION; use http::header::CONTENT_DISPOSITION;
use http::HeaderMap; use http::HeaderMap;
use reqwest::{multipart, Client}; use reqwest::{multipart, Client};
use serde_json::{from_str, to_string, to_value}; use serde_json::{from_value, to_string, Value};
use crate::api::LimitType; use crate::api::LimitType;
use crate::errors::{ChorusError, ChorusResult}; use crate::errors::{ChorusError, ChorusResult};
@ -104,20 +104,20 @@ impl Message {
.body(to_string(&query).unwrap()), .body(to_string(&query).unwrap()),
}; };
let result = request.send_request(user).await?; let result = request.send_request(user).await?;
let result_text = result.text().await.unwrap(); let result_json = result.json::<Value>().await.unwrap();
if let Ok(response) = from_str::<Vec<Message>>(&result_text) { if !result_json.is_object() {
return Ok(response); return Err(search_error(result_json.to_string()));
} }
if to_value(result_text.clone()).is_err() { let value_map = result_json.as_object().unwrap();
return Err(search_error(result_text)); if let Some(messages) = value_map.get("messages") {
if let Ok(response) = from_value::<Vec<Vec<Message>>>(messages.clone()) {
let result_messages: Vec<Message> = response.into_iter().flatten().collect();
return Ok(result_messages);
}
} }
let result_value = to_value(result_text.clone()).unwrap(); // The code below might be incorrect. We'll cross that bridge when we come to it
if !result_value.is_object() {
return Err(search_error(result_text));
}
let value_map = result_value.as_object().unwrap();
if !value_map.contains_key("code") || !value_map.contains_key("retry_after") { if !value_map.contains_key("code") || !value_map.contains_key("retry_after") {
return Err(search_error(result_text)); return Err(search_error(result_json.to_string()));
} }
let code = value_map.get("code").unwrap().as_u64().unwrap(); let code = value_map.get("code").unwrap().as_u64().unwrap();
let retry_after = value_map.get("retry_after").unwrap().as_u64().unwrap(); let retry_after = value_map.get("retry_after").unwrap().as_u64().unwrap();