Add support for Research Organization Registry API
This commit is contained in:
parent
286c5d8900
commit
dbf94eb4b4
|
@ -14,6 +14,7 @@ public class DataFieldsUrlConfiguration {
|
|||
private String count;
|
||||
private String path;
|
||||
private String host;
|
||||
private String types;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -85,4 +86,12 @@ public class DataFieldsUrlConfiguration {
|
|||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
@XmlElement(name = "types")
|
||||
public String getTypes() {
|
||||
return types;
|
||||
}
|
||||
public void setTypes(String types) {
|
||||
this.types = types;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import eu.eudat.logic.proxy.config.UrlConfiguration;
|
|||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.proxy.config.exceptions.HugeResultSet;
|
||||
import eu.eudat.logic.proxy.config.exceptions.NoURLFound;
|
||||
import net.minidev.json.JSONArray;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -159,7 +160,7 @@ public class RemoteFetcher {
|
|||
private String replaceCriteriaOnUrl(String path, ExternalUrlCriteria externalUrlCriteria, String firstPage) {
|
||||
String completedPath = path;
|
||||
if (externalUrlCriteria.getLike() != null) {
|
||||
if ((path.contains("openaire") || path.contains("orcid")) && externalUrlCriteria.getLike().equals("")) {
|
||||
if ((path.contains("openaire") || path.contains("orcid") || path.contains("ror")) && externalUrlCriteria.getLike().equals("")) {
|
||||
completedPath = completedPath.replaceAll("\\{like}", "*");
|
||||
} else {
|
||||
completedPath = completedPath.replaceAll("\\{like}", externalUrlCriteria.getLike());
|
||||
|
@ -279,6 +280,28 @@ public class RemoteFetcher {
|
|||
return getResultsFromUrl(replacedPath, jsonDataPath.getUrlConfiguration().getData(), jsonDataPath.getUrlConfiguration().getData().getPath(), jsonDataPath.getUrlConfiguration().getContentType());
|
||||
}).filter(Objects::nonNull).map(results1 -> results1.results.get(0)).collect(Collectors.toList());
|
||||
results = new Results(multiResults, new HashMap<>(1, 1));
|
||||
} else if (jsonDataPath.getFieldsUrlConfiguration().getTypes() != null) {
|
||||
List<Map<String, Object>> tempRes = jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getId() + "," + jsonDataPath.getFieldsUrlConfiguration().getName()
|
||||
+ "," + jsonDataPath.getFieldsUrlConfiguration().getTypes() + "," + jsonDataPath.getFieldsUrlConfiguration().getUri() + "]");
|
||||
List<Map<String, String>> finalRes = new ArrayList<>();
|
||||
tempRes.forEach(map -> {
|
||||
Map<String, String> resMap = new HashMap<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (key.equals(jsonDataPath.getFieldsUrlConfiguration().getTypes().substring(1, jsonDataPath.getFieldsUrlConfiguration().getTypes().length() - 1))) {
|
||||
resMap.put("tags", ((JSONArray) value).toJSONString());
|
||||
} else if (key.equals(jsonDataPath.getFieldsUrlConfiguration().getUri().substring(1, jsonDataPath.getFieldsUrlConfiguration().getTypes().length() - 1))) {
|
||||
resMap.put(key, ((JSONArray) value).toJSONString());
|
||||
} else {
|
||||
resMap.put(key, (String) value);
|
||||
}
|
||||
});
|
||||
|
||||
finalRes.add(resMap);
|
||||
});
|
||||
|
||||
results = new Results(finalRes,
|
||||
new HashMap<>(1, 1));
|
||||
} else {
|
||||
results = new Results(jsonContext.read(jsonDataPath.getPath()
|
||||
+ "[" + jsonDataPath.getFieldsUrlConfiguration().getName() + "," + jsonDataPath.getFieldsUrlConfiguration().getDescription()
|
||||
|
|
|
@ -743,6 +743,25 @@
|
|||
</data>
|
||||
<paginationpath>$['meta']['pagination']['page','pages','count']</paginationpath>
|
||||
</urlConfig>
|
||||
<urlConfig>
|
||||
<key>ROR</key>
|
||||
<label>ROR</label>
|
||||
<ordinal>1</ordinal>
|
||||
<type>External</type>
|
||||
<url>https://api.ror.org/organizations?query={like}&page={page}</url>
|
||||
<firstPage>1</firstPage>
|
||||
<contenttype>application/vnd.api+json; charset=utf-8</contenttype>
|
||||
<data>
|
||||
<path>$['items'][*]</path>
|
||||
<fields>
|
||||
<id>'id'</id>
|
||||
<name>'name'</name>
|
||||
<uri>'links'</uri>
|
||||
<types>'types'</types>
|
||||
</fields>
|
||||
</data>
|
||||
<paginationpath>$['number_of_results']</paginationpath>
|
||||
</urlConfig>
|
||||
<!-- <urlConfig>
|
||||
<key>openAire</key>
|
||||
<label>OpenAIRE</label>
|
||||
|
|
Loading…
Reference in New Issue