package org.gcube.dataharvest.harvester; import java.io.IOException; import java.net.MalformedURLException; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.dataharvest.datamodel.HarvestedData; import org.gcube.dataharvest.utils.Utils; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class VreUsersHarvester extends BasicHarvester { private static Logger logger = LoggerFactory.getLogger(VreUsersHarvester.class); public VreUsersHarvester(Date start, Date end) throws ParseException { super(start, end); } @Override public List getData() throws Exception { String context = Utils.getCurrentContext(); try { int measure = get(); HarvestedData harvest = new HarvestedData(HarvestedData.USERS, context, measure); logger.debug(harvest.toString()); ArrayList data = new ArrayList(); data.add(harvest); return data; } catch (Exception e) { logger.error("Error Haversting Context Users for context {}", context, e); throw e; } } private int get() throws MalformedURLException, IOException { int userNumber = 0; // la seguente stringa deve essere letta dinamicamente String url = "https://socialnetworking1.d4science.org/social-networking-library-ws/rest/2/users/get-all-usernames?gcube-token="; String token = SecurityTokenProvider.instance.get(); JSONObject jsonObject = new JSONObject(Utils.getJson(url + token)); Boolean success = (Boolean) jsonObject.get("success"); if (success == false) { String message = "get-all-usernames returned an error. token: " + token; logger.error(message); throw new IOException(message); } userNumber = jsonObject.getJSONArray("result").length(); return userNumber; } }