package modules; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Scanner; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import bot.Message; import bot.Server; public class UrbanDictionary implements bot.Module { @Override public void parse(Message m) { if(m.botCommand().equals("ud")){ String target = m.param(); if(!m.param().startsWith("#")) target = m.sender(); if(m.botParamsArray().length == 0)return; String query = m.botParams().replace("\\s+", "%20"); try { URL url = new URL("http://api.urbandictionary.com/v0/define?term=" + query); InputStream in = url.openStream(); Scanner scan = new Scanner(in); String jsonstring = ""; while(scan.hasNext()){ jsonstring += scan.next() + " "; } scan.close(); Gson gson = new GsonBuilder().create(); JsonObject json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject(); if(json.get("result_type").getAsString().equals("no_results")){ String title = "No results found for " + m.botParams(); Server.say(target, title); return; } JsonObject result = json.get("list").getAsJsonArray().get(0).getAsJsonObject(); String word = result.get("word").getAsString(); String permalink = result.get("permalink").getAsString(); String definition = result.get("definition").getAsString(); String title = String.format("%s: %s (%s)",word, definition, permalink); Server.say(target, title); } catch (IOException e) { e.printStackTrace(); String title = "No results found for " + m.botParams(); Server.say(target, title); } catch (IndexOutOfBoundsException e){ String title = "No results found for " + m.botParams(); Server.say(target, title); } } } }