From 1494f44362ac80549e6325b3b5a92d6b0812e4cf Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Thu, 20 Jun 2024 15:36:56 +0300 Subject: [PATCH] [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..) --- services/utils-service/beta-properties.file | 1 + .../utils-service/production-properties.file | 1 + services/utils-service/properties.file | 1 + services/utils-service/uploadService.js | 59 ++++++++++++++----- 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/services/utils-service/beta-properties.file b/services/utils-service/beta-properties.file index e66a9f36..4fd7d30a 100644 --- a/services/utils-service/beta-properties.file +++ b/services/utils-service/beta-properties.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 diff --git a/services/utils-service/production-properties.file b/services/utils-service/production-properties.file index 539e3cd1..f0110b3e 100644 --- a/services/utils-service/production-properties.file +++ b/services/utils-service/production-properties.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 diff --git a/services/utils-service/properties.file b/services/utils-service/properties.file index 8ab7aa3b..031495a9 100644 --- a/services/utils-service/properties.file +++ b/services/utils-service/properties.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 diff --git a/services/utils-service/uploadService.js b/services/utils-service/uploadService.js index 5d6202d5..01919451 100644 --- a/services/utils-service/uploadService.js +++ b/services/utils-service/uploadService.js @@ -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