public void testGeoMethods() throws Exception { GeoQuery query; ResponseList<Place> places; query = new GeoQuery(new GeoLocation(0, 0)); places = twitter1.reverseGeoCode(query); assertEquals(0, places.size()); query = new GeoQuery(new GeoLocation(37.78215, -122.40060)); places = twitter1.reverseGeoCode(query); assertNotNull(TwitterObjectFactory.getRawJSON(places)); assertEquals( places.get(0), TwitterObjectFactory.createPlace(TwitterObjectFactory.getRawJSON(places.get(0)))); assertTrue(places.size() > 0); places = twitter1.searchPlaces(query); assertNotNull(TwitterObjectFactory.getRawJSON(places)); assertEquals( places.get(0), TwitterObjectFactory.createPlace(TwitterObjectFactory.getRawJSON(places.get(0)))); assertTrue(places.size() > 0); places = twitter1.getSimilarPlaces(new GeoLocation(37.78215, -122.40060), "SoMa", null, null); assertNotNull(TwitterObjectFactory.getRawJSON(places)); assertEquals( places.get(0), TwitterObjectFactory.createPlace(TwitterObjectFactory.getRawJSON(places.get(0)))); assertTrue(places.size() > 0); try { Place place = twitter1.getGeoDetails("5a110d312052166f"); assertNotNull(TwitterObjectFactory.getRawJSON(place)); assertEquals(place, TwitterObjectFactory.createPlace(TwitterObjectFactory.getRawJSON(place))); assertEquals("San Francisco, CA", place.getFullName()); assertEquals("California, US", place.getContainedWithIn()[0].getFullName()); } catch (TwitterException te) { // is being rate limited assertEquals(400, te.getStatusCode()); } String sanFrancisco = "5a110d312052166f"; Status status = twitter1.updateStatus( new StatusUpdate(new java.util.Date() + " status with place").placeId(sanFrancisco)); assertNotNull(TwitterObjectFactory.getRawJSON(status)); assertEquals( status, TwitterObjectFactory.createStatus(TwitterObjectFactory.getRawJSON(status))); assertEquals(sanFrancisco, status.getPlace().getId()); }
public void testGeoLocation() throws Exception { final double LATITUDE = 12.3456; final double LONGITUDE = -34.5678; Status withgeo = twitter1.updateStatus( new StatusUpdate(new java.util.Date().toString() + ": updating geo location") .location(new GeoLocation(LATITUDE, LONGITUDE))); assertNotNull(TwitterObjectFactory.getRawJSON(withgeo)); assertEquals( withgeo, TwitterObjectFactory.createStatus(TwitterObjectFactory.getRawJSON(withgeo))); assertTrue(withgeo.getUser().isGeoEnabled()); assertEquals(LATITUDE, withgeo.getGeoLocation().getLatitude()); assertEquals(LONGITUDE, withgeo.getGeoLocation().getLongitude()); assertFalse(twitter2.verifyCredentials().isGeoEnabled()); }
public List<Tweet> readFile(String fileLocation, int limit, String fromTweetId) { long startTime = System.currentTimeMillis(); int errors = 0; int added = 0; int ignored = 0; int skipped = 0; List<Tweet> tweets = new ArrayList<Tweet>(); try { // Read gzFile InputStream inputStream = new GZIPInputStream(new FileInputStream(fileLocation)); Reader decoder = new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(decoder); String status; while ((status = br.readLine()) != null) { // Ignore garbage and log output lines, all statuses start with JSON bracket if (!status.equals("") && status.charAt(0) == '{') { try { JSONObject jsonObject = new JSONObject(status); // We use created_at as an indicator that this is a Tweet. if (jsonObject.has("created_at")) { Status statusObject = TwitterObjectFactory.createStatus(status); Tweet tweet = this.getTweetObjectFromStatus(statusObject); if (fromTweetId != null) { if (fromTweetId.equals(tweet.getId())) { this.log.write("StatusFileReader - Scanner pickup from " + fromTweetId); fromTweetId = null; } else { skipped++; } continue; } added++; tweets.add(tweet); if (limit > 0 && added >= limit) { break; } } else { ignored++; } } catch (JSONException e) { this.log.write( "Exception in StatusFileReader: Json Parse Failure on: " + status + ", " + e.getMessage()); } } else { ignored++; } } br.close(); decoder.close(); inputStream.close(); } catch (Exception e) { this.log.write( "Exception in StatusFileReader: Error Reading File: " + e.getClass().getName() + ": " + e.getMessage()); } long runTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - startTime); double ops = ((double) added / (double) Math.max(runTimeSeconds, 1)); this.log.write( "StatusFileReader - " + fileLocation + " processed in " + runTimeSeconds + "s. " + added + " ok / " + errors + " errors / " + ignored + " ignored / " + skipped + " skipped. " + ops + " ops. Limit: " + limit + ", Fetch: " + tweets.size()); return tweets; }