package eu.dnetlib.ariadneplus.catalogue; import java.io.IOException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.ariadneplus.jrr.AriadnePlusRegistryResource; /** * Created by Alessia Bardi on 08/03/2018. * * @author Alessia Bardi * TODO: reimplement for new RESTful API. Not needed with new API */ @Deprecated public class CatalogueAPIResponse { private JsonNode response; public void setResponseBody(final String responseBody) throws IOException { ObjectMapper mapper = new ObjectMapper(); response = mapper.readTree(responseBody); } public boolean isSuccess(){ return response.get("success").asBoolean(); } public AriadnePlusRegistryResource getAriadnePlusRegistryResource() throws IOException { if(!hasAriadnePlusRegistryResource()) return null; else{ JsonNode result = response.get("result"); return parseResult(result); } } public boolean hasAriadnePlusRegistryResource(){ JsonNode result = response.path("result"); return !result.isMissingNode(); } public String getErrorMessage(){ if(isSuccess()) return ""; //TODO: tell d4science guys that error messages sometimes are in error.name, sometimes in message JsonNode message = response.path("message"); if(!message.isMissingNode()) return message.toString(); else{ JsonNode error = response.get("error"); if(!error.isMissingNode()){ return error.toString(); } } return "Error message not available in error or message fields"; } protected AriadnePlusRegistryResource parseResult(JsonNode result) throws IOException { String uuid = result.get("id").asText(); String type = null; JsonNode extras = result.get("extras"); for(JsonNode jn : extras){ String key = jn.get("key").asText(); if(key.equals("system:type")){ type = jn.get("value").asText(); } } return new AriadnePlusRegistryResource().setJson(result.asText()).setType(type).setUuid(uuid); } }