package esl.cuenet.source.accessors; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.util.JSON; import esl.system.SysLoggerUtils; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.net.URLCodec; import org.apache.http.HttpException; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; import org.junit.Test; import java.io.IOException; public class YahooPlaceFinderTest { private Logger logger = Logger.getLogger(YahooPlaceFinderTest.class); static { SysLoggerUtils.initLogger(); } public YahooPlaceFinderTest() { super(); } @Test public void runTest() throws IOException { YahooPlaceFinderAPI placeFinder = new YahooPlaceFinderAPI(); BasicDBObject o = placeFinder.findAddress(30.2669, -97.7428); if (o != null) logger.info(o.toString()); o = placeFinder.findLatLon("Eiffel Tower, Paris, France"); if (o != null) logger.info(o.toString()); } @Test public void urlTest() throws IOException, HttpException, DecoderException { URLCodec codec = new URLCodec(); String rgeo = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%2237.416275%2C%20-122.025092%22%20and%20gflags%3D%22R%22&appid=UmMtXR7c&format=json"; System.out.println(codec.decode(rgeo)); String placeName = null; String s = "http://query.yahooapis.com/v1/public/yql?q=" + codec.encode("select * from geo.placefinder WHERE text = \"" + placeName + "\"", "ISO-8859-1") + "&appid=UmMtXR7c&format=json"; System.out.println(s); HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(rgeo); System.out.println("executing request " + httpget.getURI()); // Create a response handler ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpclient.execute(httpget, responseHandler); System.out.println("----------------------------------------"); System.out.println(responseBody); System.out.println("----------------------------------------"); BasicDBObject object = (BasicDBObject) JSON.parse(responseBody); BasicDBObject query = (BasicDBObject) object.get("query"); if (query.getInt("count") == 1) { BasicDBObject r = (BasicDBObject) query.get("results"); System.out.println("obj = " + r); } else { BasicDBObject r = (BasicDBObject) query.get("results"); BasicDBList list = (BasicDBList) r.get("Result"); System.out.println("list = " + list.get(0)); } } }