Wrap with SearchService and ListService
This commit is contained in:
@@ -12,7 +12,7 @@ import jakarta.ws.rs.QueryParam;
|
|||||||
|
|
||||||
@Path("/kodik")
|
@Path("/kodik")
|
||||||
@RegisterRestClient(baseUri = "stork://kodik-metadata-service")
|
@RegisterRestClient(baseUri = "stork://kodik-metadata-service")
|
||||||
public interface KodikSearchService {
|
public interface KodikAPI {
|
||||||
@GET
|
@GET
|
||||||
@Path("/list")
|
@Path("/list")
|
||||||
KodikResponse list();
|
KodikResponse list();
|
||||||
@@ -9,7 +9,7 @@ import org.eclipse.microprofile.health.Readiness;
|
|||||||
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
||||||
|
|
||||||
import com.backend.metadata.kodik.api.model.KodikResponse;
|
import com.backend.metadata.kodik.api.model.KodikResponse;
|
||||||
import com.backend.unifier.title.api.KodikSearchService;
|
import com.backend.unifier.title.api.KodikAPI;
|
||||||
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
|
||||||
@@ -17,14 +17,14 @@ import jakarta.enterprise.context.ApplicationScoped;
|
|||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class KodikServiceHealthCheck implements HealthCheck {
|
public class KodikServiceHealthCheck implements HealthCheck {
|
||||||
@RestClient
|
@RestClient
|
||||||
KodikSearchService kodikService;
|
KodikAPI kodikAPI;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HealthCheckResponse call() {
|
public HealthCheckResponse call() {
|
||||||
HealthCheckResponseBuilder responseBuilder = HealthCheckResponse.named("Kodik Service Connection");
|
HealthCheckResponseBuilder responseBuilder = HealthCheckResponse.named("Kodik Service Connection");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
KodikResponse response = kodikService.search("Хеллсинг");
|
KodikResponse response = kodikAPI.search("Хеллсинг");
|
||||||
|
|
||||||
return responseBuilder
|
return responseBuilder
|
||||||
.up()
|
.up()
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.backend.unifier.title.resource;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
import com.backend.unifier.title.service.GeneralListService;
|
||||||
|
|
||||||
|
import jakarta.ws.rs.GET;
|
||||||
|
import jakarta.ws.rs.Path;
|
||||||
|
|
||||||
|
@Path("/list")
|
||||||
|
public class ListResource {
|
||||||
|
private final GeneralListService listService;
|
||||||
|
|
||||||
|
public ListResource(GeneralListService listService) {
|
||||||
|
this.listService = listService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/kodik")
|
||||||
|
public SearchEntries list() {
|
||||||
|
return listService.list(ContentProviderSource.KODIK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,38 +1,25 @@
|
|||||||
package com.backend.unifier.title.resource;
|
package com.backend.unifier.title.resource;
|
||||||
|
|
||||||
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
|
||||||
import com.backend.unifier.title.api.KodikSearchService;
|
|
||||||
import com.backend.unifier.title.model.SearchEntries;
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
import com.backend.unifier.title.service.KodikResponseConvertService;
|
import com.backend.unifier.title.service.GeneralSearchService;
|
||||||
|
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.QueryParam;
|
import jakarta.ws.rs.QueryParam;
|
||||||
|
|
||||||
@Path("/")
|
|
||||||
public class SearchResource {
|
|
||||||
private final KodikSearchService kodikSearchService;
|
|
||||||
private final KodikResponseConvertService kodikConvertService;
|
|
||||||
|
|
||||||
public SearchResource(@RestClient KodikSearchService kodikSearchService,
|
|
||||||
KodikResponseConvertService kodikConvertService) {
|
|
||||||
this.kodikSearchService = kodikSearchService;
|
|
||||||
this.kodikConvertService = kodikConvertService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Path("/search")
|
@Path("/search")
|
||||||
public SearchEntries searchFast(@QueryParam("title") String title) {
|
public class SearchResource {
|
||||||
var result = kodikSearchService.search(title);
|
private final GeneralSearchService searchService;
|
||||||
return kodikConvertService.convert(result);
|
|
||||||
|
public SearchResource(GeneralSearchService searchService) {
|
||||||
|
this.searchService = searchService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("/list")
|
@Path("/kodik")
|
||||||
public SearchEntries list() {
|
public SearchEntries searchKodik(@QueryParam("title") String title) {
|
||||||
var result = kodikSearchService.list();
|
return searchService.search(ContentProviderSource.KODIK, title);
|
||||||
return kodikConvertService.convert(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.backend.unifier.title.service;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
|
||||||
|
public interface ContentProvider {
|
||||||
|
ContentProviderSource source();
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.backend.unifier.title.service;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.enterprise.inject.Instance;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
public class GeneralListService {
|
||||||
|
private final Instance<ListService> listServices;
|
||||||
|
|
||||||
|
public GeneralListService(Instance<ListService> listServices) {
|
||||||
|
this.listServices = listServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchEntries list(ContentProviderSource source) {
|
||||||
|
for (ListService listService : listServices) {
|
||||||
|
if (listService.source() == source)
|
||||||
|
return listService.list();
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("cannot find list service for source: " + source);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.backend.unifier.title.service;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.enterprise.inject.Instance;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
public class GeneralSearchService {
|
||||||
|
private final Instance<SearchService> searchServices;
|
||||||
|
|
||||||
|
public GeneralSearchService(Instance<SearchService> searchServices) {
|
||||||
|
this.searchServices = searchServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchEntries search(ContentProviderSource source, String title) {
|
||||||
|
for (SearchService service : searchServices) {
|
||||||
|
if (service.source() == source)
|
||||||
|
return service.search(title);
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("cannot find search implementation for source: " + source);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.backend.unifier.title.service;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
|
||||||
|
public interface ListService extends ContentProvider {
|
||||||
|
SearchEntries list();
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.backend.unifier.title.service;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
|
||||||
|
public interface SearchService extends ContentProvider {
|
||||||
|
SearchEntries search(String title);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.backend.unifier.title.service;
|
package com.backend.unifier.title.service.kodik;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -8,6 +8,8 @@ import com.backend.metadata.kodik.api.model.KodikResponse;
|
|||||||
import com.backend.unifier.title.mapper.KodikResponseMapper;
|
import com.backend.unifier.title.mapper.KodikResponseMapper;
|
||||||
import com.backend.unifier.title.model.ContentProviderSource;
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
import com.backend.unifier.title.model.SearchEntries;
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
import com.backend.unifier.title.service.IdentifierMaskService;
|
||||||
|
import com.backend.unifier.title.service.PosterUrlNormalizer;
|
||||||
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.backend.unifier.title.service.kodik;
|
||||||
|
|
||||||
|
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
||||||
|
|
||||||
|
import com.backend.unifier.title.api.KodikAPI;
|
||||||
|
import com.backend.unifier.title.model.ContentProviderSource;
|
||||||
|
import com.backend.unifier.title.model.SearchEntries;
|
||||||
|
import com.backend.unifier.title.service.ListService;
|
||||||
|
import com.backend.unifier.title.service.SearchService;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
public class KodikService implements ListService, SearchService {
|
||||||
|
private final KodikAPI kodikAPI;
|
||||||
|
private final KodikResponseConvertService kodikConvertService;
|
||||||
|
|
||||||
|
public KodikService(@RestClient KodikAPI kodikAPI,
|
||||||
|
KodikResponseConvertService kodikConvertService) {
|
||||||
|
this.kodikAPI = kodikAPI;
|
||||||
|
this.kodikConvertService = kodikConvertService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentProviderSource source() {
|
||||||
|
return ContentProviderSource.KODIK;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchEntries search(String title) {
|
||||||
|
var response = kodikAPI.search(title);
|
||||||
|
return kodikConvertService.convert(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchEntries list() {
|
||||||
|
var response = kodikAPI.list();
|
||||||
|
return kodikConvertService.convert(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user