package org.gcube.tests; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import org.gcube.data.publishing.ckan2zenodo.Fixer; import org.gcube.data.publishing.ckan2zenodo.Translator; import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor; import org.gcube.data.publishing.ckan2zenodo.model.ZenodoCredentials; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class TestCommons { static ZenodoCredentials loadCredentials() throws IOException { String BASE_URL="https://sandbox.zenodo.org/api/"; String key=Files.readAllLines(Paths.get("/home/fabio/workspaces/zenodo.key")).get(0); System.out.println("Using key : "+key); return new ZenodoCredentials(key,BASE_URL); } static String convertStreamToString(java.io.InputStream is) { java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } static ObjectMapper getMapper() { ObjectMapper mapper=new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); mapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false); mapper.setSerializationInclusion(Include.NON_NULL); return mapper; } static final ZenodoDeposition readAndTransform(String jsonFile, Translator transformer,ZenodoDeposition...depositions) throws Exception { try{ String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream(jsonFile)); CkanItemDescriptor desc=new CkanItemDescriptor(json); System.out.println("Going to transform : "+desc.getContent()); System.out.println("Result : "); ZenodoDeposition dep=transformer.transform(desc, (depositions!=null&&depositions.length>0)?depositions[0]:null); System.out.println(dep); System.out.println("As JSON : "); System.out.println(Fixer.fixSending(getMapper().writeValueAsString(dep))); return dep; }catch(Throwable t) { throw new Exception("Errors with json file "+jsonFile,t); } } }