diff --git a/pom.xml b/pom.xml index dbaf867..9727c63 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,14 @@ io.quarkus quarkus-rest + + org.eclipse.microprofile.rest.client + microprofile-rest-client-api + + + io.quarkus + quarkus-rest-client + io.quarkus quarkus-junit diff --git a/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java b/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java new file mode 100644 index 0000000..ba31561 --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java @@ -0,0 +1,13 @@ +package com.backend.metadata.shikimori.model; + +import java.util.List; + +public class AnimeMetadata { + public int shikimori_id; + public String title; + public String poster; + public String description; + public List characters; + public List related; + public List voice_actors; +} diff --git a/src/main/java/com/backend/metadata/shikimori/model/Character.java b/src/main/java/com/backend/metadata/shikimori/model/Character.java new file mode 100644 index 0000000..1ac9b9b --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/model/Character.java @@ -0,0 +1,8 @@ +package com.backend.metadata.shikimori.model; + +public class Character { + public String name; + public String role; + public String poster; + public String seiyuu; +} diff --git a/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java b/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java new file mode 100644 index 0000000..b28e41d --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java @@ -0,0 +1,7 @@ +package com.backend.metadata.shikimori.model; + +public class RelatedAnime { + public int shikimori_id; + public String relation; + public String title; +} diff --git a/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java b/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java new file mode 100644 index 0000000..223ce18 --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java @@ -0,0 +1,7 @@ +package com.backend.metadata.shikimori.model; + +public class VoiceActor { + public String name; + public String language; + public String character; +} diff --git a/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java b/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java new file mode 100644 index 0000000..eae76de --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java @@ -0,0 +1,22 @@ +package com.backend.metadata.shikimori.service; + +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import org.eclipse.microprofile.rest.client.inject.RestClient; + +@Path("/metadata") +public class MetadataResource { + + @RestClient + ShikimoriService shikimoriService; + + @GET + @Path("/{shikimori_id}") + @Produces(MediaType.APPLICATION_JSON) + public AnimeMetadata getMetadata(@PathParam("shikimori_id") int shikimoriId) { + return shikimoriService.getMetadata(shikimoriId); + } +} diff --git a/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java b/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java new file mode 100644 index 0000000..beb20f8 --- /dev/null +++ b/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java @@ -0,0 +1,17 @@ +package com.backend.metadata.shikimori.service; + +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +@RegisterRestClient(configKey = "shikimori-api") +public interface ShikimoriService { + + @GET + @Path("/api/graphql") + @Produces(MediaType.APPLICATION_JSON) + AnimeMetadata getMetadata(@PathParam("id") int shikimoriId); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29..3e99f5e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1,3 @@ +# Shikimori API configuration +shikimori-api/mp-rest/url=https://shikimori.one +shikimori-api/mp-rest/scope=jakarta.inject.Singleton