package nl.pascaldevink.intellij.thesaurus.downloader;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class BigHugeThesaurusDownloader extends AbstractDownloader
{
private static final String endpoint = "http://words.bighugelabs.com/api/2";
public BigHugeThesaurusDownloader(String apiKey) {
super(apiKey);
}
@Override
protected String buildUrl(String originalWord) throws UnsupportedEncodingException
{
return endpoint + "/" + apiKey + "/" + URLEncoder.encode(originalWord, "UTF-8") + "/json";
}
protected List<String> parseRawJsonToSynonymsList(String rawJson)
{
List<String> synonyms = new ArrayList<String>();
JSONObject fullJSON = (JSONObject) JSONValue.parse(rawJson);
// Get nouns
synonyms.addAll(getSynonymsFromJSON(fullJSON, "noun"));
// Get verbs
synonyms.addAll(getSynonymsFromJSON(fullJSON, "verb"));
return synonyms;
}
protected List<String> getSynonymsFromJSON(JSONObject fullJSON, String type)
{
List<String> synonyms = new ArrayList<String>();
JSONObject wordType = (JSONObject)fullJSON.get(type);
if (wordType == null)
return synonyms;
JSONArray syns = (JSONArray)wordType.get("syn");
for(Object synonym: syns)
{
synonyms.add(camelCaseSynonym((String) synonym));
}
return synonyms;
}
}