From 4da7facb6562657230c1b15a8af7cb818c7b31fd Mon Sep 17 00:00:00 2001 From: bivashy Date: Tue, 10 Feb 2026 16:49:22 +0500 Subject: [PATCH] Implement basic search by id --- .../search/kodik/service/api/KodikAPI.java | 11 +++ .../service/resource/SearchResource.java | 80 +++++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/src/main/java/com/backend/search/kodik/service/api/KodikAPI.java b/src/main/java/com/backend/search/kodik/service/api/KodikAPI.java index 72f3722..6cb021c 100644 --- a/src/main/java/com/backend/search/kodik/service/api/KodikAPI.java +++ b/src/main/java/com/backend/search/kodik/service/api/KodikAPI.java @@ -18,4 +18,15 @@ public interface KodikAPI { @Field("limit") int limit, @Field("with_material_data") int withMaterialData); + @FormUrlEncoded + @POST("search") + Call searchId( + @Field("token") String token, + @Field("id") String id, + @Field("kinopoisk_id") String kinopoiskId, + @Field("shikimori_id") String shikimoriId, + @Field("imdb_id") String imdbId, + @Field("limit") int limit, + @Field("with_material_data") int withMaterialData); + } diff --git a/src/main/java/com/backend/search/kodik/service/resource/SearchResource.java b/src/main/java/com/backend/search/kodik/service/resource/SearchResource.java index 30a9e17..81837b4 100644 --- a/src/main/java/com/backend/search/kodik/service/resource/SearchResource.java +++ b/src/main/java/com/backend/search/kodik/service/resource/SearchResource.java @@ -50,4 +50,84 @@ public class SearchResource { } } + @GET + @Path("/kodik_id") + public KodikResponse searchKodikId(@QueryParam("kodikID") String kodikID) throws ServiceUnavailableException { + try { + Response response = kodikAPI + .searchId(tokenProvider.getKodikToken(), + kodikID, + null, + null, + null, + 100, + 1) + .execute(); + if (!response.isSuccessful()) { + LOG.errorv("failed search request with kodikID {0}, response code {1}, message {2}, body {3}", kodikID, + response.code(), + response.message(), + response.raw().body()); + throw new BadRequestException("bad response, code: " + response.code()); + } + return searchFilterService.filter(response.body()); + } catch (IOException e) { + LOG.warn("i/o error", e); + throw new ServiceUnavailableException("i/o error"); + } + } + + @GET + @Path("/kinopoisk_id") + public KodikResponse searchKinopoiskId(@QueryParam("kinopoiskID") String kinopoiskID) + throws ServiceUnavailableException { + try { + Response response = kodikAPI + .searchId(tokenProvider.getKodikToken(), + null, + kinopoiskID, + null, + null, + 100, + 1) + .execute(); + if (!response.isSuccessful()) { + LOG.errorv("failed search request with kinopoiskID {0}, response code {1}, message {2}", kinopoiskID, + response.code(), + response.message()); + throw new BadRequestException("bad response, code: " + response.code()); + } + return searchFilterService.filter(response.body()); + } catch (IOException e) { + LOG.warn("i/o error", e); + throw new ServiceUnavailableException("i/o error"); + } + } + + @GET + @Path("/shikimori_id") + public KodikResponse searchShikimoriId(@QueryParam("shikimoriID") String shikimoriID) + throws ServiceUnavailableException { + try { + Response response = kodikAPI + .searchId(tokenProvider.getKodikToken(), + null, + null, + shikimoriID, + null, + 100, + 1) + .execute(); + if (!response.isSuccessful()) { + LOG.errorv("failed search request with shikimoriID {0}, response code {1}, message {2}", shikimoriID, + response.code(), + response.message()); + throw new BadRequestException("bad response, code: " + response.code()); + } + return searchFilterService.filter(response.body()); + } catch (IOException e) { + LOG.warn("i/o error", e); + throw new ServiceUnavailableException("i/o error"); + } + } }