package eu.dnetlib.dnetexploremetrics.service; import com.fasterxml.jackson.databind.util.JSONPObject; import eu.dnetlib.dnetexploremetrics.dao.MetricsFileDAO; import eu.dnetlib.dnetexploremetrics.model.Metrics; import eu.dnetlib.dnetexploremetrics.utils.PrometheusMetricsFormatter; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; public class MetricsService { @Value("${search.service.url}") private String searchServiceUrl; private final String recordsRequest = "results?size=0&format=json"; private final String publicationsRequest = "publications?size=0&format=json"; private final String datasetsRequest = "datasets?size=0&format=json"; private final String softwareRequest = "software?size=0&format=json"; private final String orpRequest = "other?size=0&format=json"; private final String fundersRequest = "resources2?format=json&refine=true&fields=relfunder&type=results&page=0&size=0"; private final String projectsRequest = "projects?size=0&format=json"; private final String contentProvidersRequest = "datasources?size=0&format=json"; private void getMetrics(Metrics metrics) { RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.getForEntity("https://services.openaire.eu/search/v2/api/" + recordsRequest, String.class); JSONObject jsonObject = new JSONObject(response.getBody()); metrics.records= jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + publicationsRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.publications = jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + datasetsRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.datasets = jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + softwareRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.software = jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + orpRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.orp = jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + fundersRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.funders = jsonObject.getJSONObject("refineResults").getJSONArray("relfunder").length()+""; response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + projectsRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.projects = jsonObject.getJSONObject("meta").get("total").toString(); response = restTemplate. getForEntity("https://services.openaire.eu/search/v2/api/" + contentProvidersRequest, String.class); jsonObject = new JSONObject(response.getBody()); metrics.contentProviders = jsonObject.getJSONObject("meta").get("total").toString(); } public static void main(String[] args) { MetricsService ms = new MetricsService(); Metrics m = new Metrics(); ms.getMetrics(m); PrometheusMetricsFormatter.formatMetrics(m); } }