[develop | DONE | CHANGED]: utils-service: beta-properties.file & production-properties.file & properties.file: Added property fundersServiceAPIUrl | uploadService.js: Added query and parsing of funders from new Funders API (created by CNR) for extra info (country, websiteUrl, registered, etc..)

This commit is contained in:
Konstantina Galouni 2024-06-20 15:36:56 +03:00
parent 24696d7991
commit 1494f44362
4 changed files with 48 additions and 14 deletions

View File

@ -1,6 +1,7 @@
userInfoUrl = https://beta.services.openaire.eu/login-service/userInfo
searchServiceAPIUrl = https://beta.services.openaire.eu/search/v2/api/
monitorAPIUrl = https://beta.services.openaire.eu/uoa-monitor-service/
fundersServiceAPIUrl = https://beta.services.openaire.eu/openaire/funders/
ssl = true
localPath = false
# photo size in KB

View File

@ -1,6 +1,7 @@
userInfoUrl = https://services.openaire.eu/login-service/userInfo
searchServiceAPIUrl = https://services.openaire.eu/search/v2/api/
monitorAPIUrl = https://services.openaire.eu/uoa-monitor-service/
fundersServiceAPIUrl = https://services.openaire.eu/openaire/funders/
ssl = true
localPath = false
# photo size in KB

View File

@ -1,6 +1,7 @@
userInfoUrl = http://mpagasas.di.uoa.gr:19080/login-service/userInfo
searchServiceAPIUrl = https://beta.services.openaire.eu/search/v2/api/
monitorAPIUrl = http://duffy.di.uoa.gr:19380/uoa-monitor-service/
fundersServiceAPIUrl = https://beta.services.openaire.eu/openaire/funders/
ssl = false
localPath = true
# photo size in KB

View File

@ -15,6 +15,7 @@ if (properties.get('ssl')) {
}
var searchServiceAPIUrl = properties.get('searchServiceAPIUrl');
var monitorServiceAPIUrl = properties.get('monitorAPIUrl');
var fundersServiceAPIUrl = properties.get('fundersServiceAPIUrl');
var auth = properties.get('userInfoUrl');
/** @deprecated*/
var authDeprecated = auth.includes("accessToken");
@ -223,7 +224,7 @@ app.get('/explore/funders', async function (req, res) {
searchServiceAPIUrl + 'resources2/?format=json&type=results&fq=relfunder=*&refine=true&fields=relfunder&sf=relfunder&page=0&size=0&fq=resultbestaccessright%20exact%20%22Open%20Access%22',
searchServiceAPIUrl + 'resources2/?format=json&type=projects&fq=funder=*&fq=projectcode<>"unidentified"&refine=true&fields=funder&sf=funder&page=0&size=0',
monitorServiceAPIUrl + 'stakeholder?type=funder',
fundersServiceAPIUrl
]
const dataPromises = requests.map((url) => axios.get( url));
const dataResponses = await Promise.all(dataPromises);
@ -233,37 +234,67 @@ app.get('/explore/funders', async function (req, res) {
let resultsFunders = dataResponses[0].data.refineResults.relfunder;
resultsFunders.forEach(queriedFunder => {
if (!fundersMap.has(queriedFunder.id)) {
fundersMap.set(queriedFunder.id,{name: queriedFunder.name.split("||")[0], id: queriedFunder.id, results:queriedFunder.count, openResults: null, projects:null, stakeholder:null});
let id = queriedFunder.id.split("||")[0];
if (!fundersMap.has(id)) {
fundersMap.set(id,{name: queriedFunder.name.split("||")[0], id: id, results:queriedFunder.count, openResults: null, projects:null, stakeholder:null});
}
});
let openResultsFunders = dataResponses[1].data.refineResults.relfunder;
openResultsFunders.forEach(queriedFunder => {
if (!fundersMap.has(queriedFunder.id)) {
fundersMap.set(queriedFunder.id,{name: queriedFunder.name.split("||")[0], id: queriedFunder.id, results:null, openResults: queriedFunder.count, projects:null, stakeholder:null});
let id = queriedFunder.id.split("||")[0];
if (!fundersMap.has(id)) {
fundersMap.set(id,{name: queriedFunder.name.split("||")[0], id: id, results:null, openResults: queriedFunder.count, projects:null, stakeholder:null});
}else{
fundersMap.get(queriedFunder.id).openResults = queriedFunder.count;
fundersMap.get(id).openResults = queriedFunder.count;
}
});
let projectFunders = dataResponses[2].data.refineResults.funder;
projectFunders.forEach(queriedFunder => {
if (!fundersMap.has(queriedFunder.id) ) {
fundersMap.set(queriedFunder.id,{name: queriedFunder.name.split("||")[0], id: queriedFunder.id, results:null, openResults: null, projects:queriedFunder.count, stakeholder:null});
let id = queriedFunder.id.split("||")[0];
if (!fundersMap.has(id) ) {
fundersMap.set(id,{name: queriedFunder.name.split("||")[0], id: id, results:null, openResults: null, projects:queriedFunder.count, stakeholder:null});
}else{
fundersMap.get(queriedFunder.id).projects = queriedFunder.count;
fundersMap.get(id).projects = queriedFunder.count;
}
});
let stakeholders = dataResponses[3].data;
stakeholders.forEach(stakeholder => {
let id = stakeholder.index_id + "||" + stakeholder.index_name + "||" + stakeholder.index_shortName;
// console.log(id);
let id = stakeholder.index_id;// + "||" + stakeholder.index_name + "||" + stakeholder.index_shortName;
if (fundersMap.has(id)) {
let ministakeholder = {id:id, name:stakeholder.name, alias: stakeholder.alias, visibility: stakeholder.visibility,
logoUrl:stakeholder.logoUrl, isUpload: stakeholder.isUpload}
fundersMap.get(id).stakeholder = ministakeholder;
let ministakeholder = {id:id, name:stakeholder.name, alias: stakeholder.alias, visibility: stakeholder.visibility,
logoUrl:stakeholder.logoUrl, isUpload: stakeholder.isUpload, websiteUrl: null}
fundersMap.get(id).stakeholder = ministakeholder;
}
});
let funders = dataResponses[4].data;
funders.forEach(funder => {
if (fundersMap.has(funder.id)) {
let storedFunder = fundersMap.get(funder.id);
if(funder.legalName) {
storedFunder.name = funder.legalName;
}
storedFunder.country = funder.country;
storedFunder.registered = funder.registered;
let storedStakeholder = storedFunder.stakeholder;
let ministakeholder = {
id:funder.id, name:storedStakeholder?.name, alias: storedStakeholder?.alias ? storedStakeholder.alias : funder.legalShortName,
websiteUrl: funder.websiteUrl, logoUrl: storedStakeholder?.logoUrl ? storedStakeholder.logoUrl : funder.logoUrl,
visibility: storedStakeholder?.visibility, isUpload: storedStakeholder?.isUpload
};
storedFunder.stakeholder = ministakeholder;
// } else {
// console.log(funder.id);
}
});
// console.log("")
// for(let f of fundersMap.keys()) {
// if(!fundersMap.get(f).stakeholder || (!fundersMap.get(f).stakeholder.websiteUrl && !fundersMap.get(f).country && !fundersMap.get(f).registered)) {
// console.log(f);
// }
// }
// Combine the data
// Send the aggregated data as the response