package eu.dnetlib.common.clients; import java.io.StringWriter; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import eu.dnetlib.domain.resource.SimpleResource; public class SimpleResourceClient extends DnetServiceClient { public List listResources(final String type) { return Arrays.asList(httpGet("/api/resources/byType/{type}", String[].class, Map.of("type", type))); } public String getResourceContent(final String id) { return httpGet("/api/resources/{id}/content", String.class, Map.of("id", id)); } public SimpleResource findResource(final String id) { return httpGet("/api/resources/{id}/metadata", SimpleResource.class, Map.of("id", id)); } public SimpleResource findResource(final String type, final String name) { return httpGet("/api/resources/byType/{type}/{name}/metadata", SimpleResource.class, Map.of("type", type, "name", name)); } public T findResourceContent(final String id, final Class clazz) { return httpGet("/api/resources/{id}/content", clazz, Map.of("id", id)); } public T findResourceContent(final String type, final String name, final Class clazz) { return httpGet("/api/resources/byType/{type}/{name}/content", clazz, Map.of("type", type, "name", name)); } public void deleteResource(final String id) { httpDelete("/api/resources/{id}", Map.of("id", id)); } public void updateResourceContent(final String id, final Object content) { httpPostObject("/api/resources/{id}/content", content, Void.class, Map.of("id", id)); } public void updateResourceMetadata(final String id, final Object content) { httpPostObject("/api/resources/{id}/metadata", content, Void.class, Map.of("id", id)); } public SimpleResource prepareNewResource(final String name, final String desc, final String type, final String subtype, final String description, final Object content) { final Map params = new HashMap<>(); params.put("name", name); params.put("type", type); params.put("subtype", subtype); params.put("description", description); params.put("content", content); return httpPostParams("/api/resources/", params, SimpleResource.class, Map.of()); } public List findResources(final String type, final String subType) { final StringWriter path = new StringWriter(); path.append("/api/resources/byType/{type}"); if (StringUtils.isNotBlank(subType)) { path.append("?subtype={subtype}"); } return Arrays.asList(httpGet(path.toString(), SimpleResource[].class, Map.of("type", type, "subtype", subType))); } }