fix(client): fixing reverse image search

This commit is contained in:
Scott Lyons 2024-08-11 00:47:48 -07:00
commit 313bd98ae6
2 changed files with 15 additions and 4 deletions

View file

@ -835,10 +835,13 @@ impl<'a> SzurubooruRequest<'a> {
pub async fn reverse_search_file( pub async fn reverse_search_file(
&self, &self,
file: &mut File, file: &mut File,
file_path: impl AsRef<str>,
) -> SzurubooruResult<ImageSearchResult> { ) -> SzurubooruResult<ImageSearchResult> {
let request = self.prep_request(Method::POST, "/posts/reverse-search", None); let request = self.prep_request(Method::POST, "/posts/reverse-search", None);
let image_part = self.part_from_file(file)?; let image_part = self
.part_from_file(file)?
.file_name(file_path.as_ref().to_string());
let form = Form::new().part("content", image_part); let form = Form::new().part("content", image_part);
self.handle_request(request.multipart(form)).await self.handle_request(request.multipart(form)).await
@ -849,9 +852,9 @@ impl<'a> SzurubooruRequest<'a> {
&self, &self,
file_path: impl AsRef<Path>, file_path: impl AsRef<Path>,
) -> SzurubooruResult<ImageSearchResult> { ) -> SzurubooruResult<ImageSearchResult> {
let mut file = File::open(file_path).map_err(SzurubooruClientError::IOError)?; let mut file = File::open(&file_path).map_err(SzurubooruClientError::IOError)?;
let filename = file_path.as_ref().file_name().unwrap().to_str().unwrap();
self.reverse_search_file(&mut file).await self.reverse_search_file(&mut file, filename).await
} }
/// Searches for an exact match of a file based on the SHA1 checksum /// Searches for an exact match of a file based on the SHA1 checksum

View file

@ -404,6 +404,14 @@ async fn test_creating_posts(client: &SzurubooruClient) {
.expect("Could not search for post by file path"); .expect("Could not search for post by file path");
assert_eq!(matching_posts.results.first().unwrap(), &folly3_post); assert_eq!(matching_posts.results.first().unwrap(), &folly3_post);
info!("Reverse searching");
let matching_posts = client
.request()
.reverse_search_file_path(&folly3_path)
.await
.expect("Could not reverse image search");
assert!(matching_posts.exact_post.is_some());
info!("Testing temporary upload"); info!("Testing temporary upload");
let folly4_path = Path::new(env!("CARGO_MANIFEST_DIR")).join("folly4.jpg"); let folly4_path = Path::new(env!("CARGO_MANIFEST_DIR")).join("folly4.jpg");
let folly4_temp_upload = client let folly4_temp_upload = client