From 03e1512a8e5e589771414aaf46db34718f1469ce Mon Sep 17 00:00:00 2001 From: David Fisher Date: Thu, 29 Nov 2012 18:52:42 -0500 Subject: [PATCH] Got initial set of tests to work. Adding more tests now --- lib/twitter/api/friends_and_followers.rb | 59 +++++++++++++++ spec/fixtures/friends_list.json | 1 + .../twitter/api/friends_and_followers_spec.rb | 72 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 spec/fixtures/friends_list.json diff --git a/lib/twitter/api/friends_and_followers.rb b/lib/twitter/api/friends_and_followers.rb index 8a715e86a..875dbe60f 100644 --- a/lib/twitter/api/friends_and_followers.rb +++ b/lib/twitter/api/friends_and_followers.rb @@ -253,7 +253,66 @@ def friendship(source, target, options={}) def friendship?(source, target, options={}) friendship(source, target, options).source.following? end + + + # Returns a cursored collection of user objects for users following the specified user. + # + # @see https://dev.twitter.com/docs/api/1.1/get/followers/list + # @rate_limited Yes + # @authentication_required Requires user context + # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. + # @return [Twitter::Cursor] + # @overload friend_ids(options={}) + # Returns an array of numeric IDs for every user the authenticated user is following + # + # @param options [Hash] A customizable set of options. + # @option options [Integer] :cursor (-1) Breaks the results into pages. This is recommended for users who are following many users. Provide a value of -1 to begin paging. Provide values as returned in the response body's next_cursor and previous_cursor attributes to page back and forth in the list. + # @example Return the authenticated user's friends' IDs + # Twitter.friend_ids + # @overload friend_ids(user, options={}) + # Returns an array of numeric IDs for every user the specified user is following + # + # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object. + # @param options [Hash] A customizable set of options. + # @option options [Integer] :cursor (-1) Breaks the results into pages. Provide values as returned in the response objects's next_cursor and previous_cursor attributes to page back and forth in the list. + # @example Return the cursored collection of users following @sferik + # Twitter.followers('sferik') + # Twitter.followers(7505382) # Same as above + def followers(*args) + merge_default_cursor!(options) + cursor_from_response(:get, "/1.1/followers/list.json", args) + end + + # Returns a cursored collection of user objects for every user the specified user is following (otherwise known as their "friends"). + # + # @see https://dev.twitter.com/docs/api/1.1/get/friendships/show + # @rate_limited Yes + # @authentication_required Requires user context + # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. + # @return [Twitter::Cursor] + # @overload friend_ids(options={}) + # Returns an array of numeric IDs for every user the authenticated user is following + # + # @param options [Hash] A customizable set of options. + # @option options [Integer] :cursor (-1) Breaks the results into pages. This is recommended for users who are following many users. Provide a value of -1 to begin paging. Provide values as returned in the response body's next_cursor and previous_cursor attributes to page back and forth in the list. + # @example Return the authenticated user's friends' IDs + # Twitter.friend_ids + # @overload friend_ids(user, options={}) + # Returns an array of numeric IDs for every user the specified user is following + # + # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object. + # @param options [Hash] A customizable set of options. + # @option options [Integer] :cursor (-1) Breaks the results into pages. Provide values as returned in the response objects's next_cursor and previous_cursor attributes to page back and forth in the list. + # @example Return the cursored collection of users @sferik is following + # Twitter.friends('sferik') + # Twitter.friends(7505382) # Same as above + def friends(*args) + options = extract_options!(args) + merge_user!(options, args.pop || screen_name) + merge_default_cursor!(options) + cursor_from_response(:users, Twitter::User, :get, "/1.1/friends/list.json", options) + end end end end diff --git a/spec/fixtures/friends_list.json b/spec/fixtures/friends_list.json new file mode 100644 index 000000000..37f557ffc --- /dev/null +++ b/spec/fixtures/friends_list.json @@ -0,0 +1 @@ +{"users":[{"id":730805892,"id_str":"730805892","name":"Will Ahrens","screen_name":"WillAhrens","location":"Long Island, New York","description":"guitarist for Nick Tangorra, Paging Grace, Trish Torrales","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":2592,"friends_count":2712,"listed_count":2,"created_at":"Wed Aug 01 14:40:58 +0000 2012","favourites_count":1482,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":3888,"lang":"en","status":{"created_at":"Thu Nov 29 19:33:44 +0000 2012","id":274234710501244929,"id_str":"274234710501244929","text":"@MandyJay7 catch ya later! :)","source":"web","truncated":false,"in_reply_to_status_id":274234209831354368,"in_reply_to_status_id_str":"274234209831354368","in_reply_to_user_id":463877152,"in_reply_to_user_id_str":"463877152","in_reply_to_screen_name":"MandyJay7","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"MandyJay7","name":"Mandy Jay","id":463877152,"id_str":"463877152","indices":[0,10]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"1A1B1F","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/679274925\/9f28628390683b63fb9784e34cc82190.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/679274925\/9f28628390683b63fb9784e34cc82190.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2896578010\/5b406ead0cbf9784ba228e34e1ccc698_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2896578010\/5b406ead0cbf9784ba228e34e1ccc698_normal.jpeg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/730805892\/1353223929","profile_link_color":"1AA196","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"252429","profile_text_color":"666666","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":156020838,"id_str":"156020838","name":"Sean R. Nicholson","screen_name":"SocMedSean","location":"Kansas City, MO","description":"Social Media Director. Tech-geek. Attorney. Bungee Master. Coffee Addict. Author. These are MY thoughts.","url":"http:\/\/www.socmedsean.com","entities":{"url":{"urls":[{"url":"http:\/\/www.socmedsean.com","expanded_url":null,"indices":[0,25]}]},"description":{"urls":[]}},"protected":false,"followers_count":9435,"friends_count":6729,"listed_count":520,"created_at":"Tue Jun 15 20:21:11 +0000 2010","favourites_count":33,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":7617,"lang":"en","status":{"created_at":"Thu Nov 29 14:51:11 +0000 2012","id":274163603626676225,"id_str":"274163603626676225","text":"Why The Term \"Social CRM\" Is Just STUPID!. #sm http:\/\/t.co\/zaNv2nQ1","source":"\u003ca href=\"http:\/\/www.socmedsean.com\" rel=\"nofollow\"\u003eSocMedSean.com Blog Posts\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[{"text":"sm","indices":[44,47]}],"urls":[{"url":"http:\/\/t.co\/zaNv2nQ1","expanded_url":"http:\/\/su.pr\/4C0L7l","display_url":"su.pr\/4C0L7l","indices":[48,68]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"022330","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/173716928\/twitter_background_final.jpg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/173716928\/twitter_background_final.jpg","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1093360517\/thinking_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1093360517\/thinking_normal.jpg","profile_link_color":"0084B4","profile_sidebar_border_color":"A8C7F7","profile_sidebar_fill_color":"C0DFEC","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":27323999,"id_str":"27323999","name":"The Smyth Group","screen_name":"thesmythgroup","location":"Baton Rouge, LA","description":"Mobile app consulting agency. iOS, Android, Kindle, Nook, Windows Phone, and Blackberry (if we have to). 15 Developers and Designers and one floppy-eared dog.","url":"http:\/\/www.thesmythgroup.com","entities":{"url":{"urls":[{"url":"http:\/\/www.thesmythgroup.com","expanded_url":null,"indices":[0,28]}]},"description":{"urls":[]}},"protected":false,"followers_count":8295,"friends_count":9124,"listed_count":85,"created_at":"Sat Mar 28 22:33:33 +0000 2009","favourites_count":50,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":2272,"lang":"en","status":{"created_at":"Thu Nov 29 20:07:36 +0000 2012","id":274243232307757056,"id_str":"274243232307757056","text":"This guy is REALLY disappointed in BP. As are we all. http:\/\/t.co\/0IEoRWtC","source":"\u003ca href=\"http:\/\/www.tweetdeck.com\" rel=\"nofollow\"\u003eTweetDeck\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/0IEoRWtC","expanded_url":"http:\/\/twitpic.com\/bhko1b","display_url":"twitpic.com\/bhko1b","indices":[55,75]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/554521752\/TSGTwitterBackground.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/554521752\/TSGTwitterBackground.png","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2401593885\/v9i3x33vjywrajo7i7za_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2401593885\/v9i3x33vjywrajo7i7za_normal.png","profile_link_color":"E77E24","profile_sidebar_border_color":"FFF8AD","profile_sidebar_fill_color":"F6FFD1","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":977187727,"id_str":"977187727","name":"lais oliveira","screen_name":"laisoliveira880","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":1,"friends_count":22,"listed_count":0,"created_at":"Wed Nov 28 23:23:21 +0000 2012","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":1,"lang":"pt","status":{"created_at":"Wed Nov 28 23:24:24 +0000 2012","id":273930371807182848,"id_str":"273930371807182848","text":"#boa noite","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[{"text":"boa","indices":[0,4]}],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2908496310\/8ec0f2b2d3707290e8338a6cb155c3a3_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2908496310\/8ec0f2b2d3707290e8338a6cb155c3a3_normal.jpeg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/977187727\/1354145151","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":6304322,"id_str":"6304322","name":"Blithe Rocher","screen_name":"Blithe","location":"Atlanta, GA","description":"PhD scientist, (aspiring) coder, tech geek, skeptic, master of spatial relationships, cyclist, not your average girl.","url":"http:\/\/www.blitherocher.com","entities":{"url":{"urls":[{"url":"http:\/\/www.blitherocher.com","expanded_url":null,"indices":[0,27]}]},"description":{"urls":[]}},"protected":false,"followers_count":614,"friends_count":770,"listed_count":28,"created_at":"Fri May 25 05:56:51 +0000 2007","favourites_count":194,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":8476,"lang":"en","status":{"created_at":"Thu Nov 29 20:44:44 +0000 2012","id":274252576868937728,"id_str":"274252576868937728","text":"@mikedao Funny, a mountain bike was not on that list. Cyclocross, Fixie, and a Pashley in no particlular order.","source":"web","truncated":false,"in_reply_to_status_id":274251921919971329,"in_reply_to_status_id_str":"274251921919971329","in_reply_to_user_id":7899342,"in_reply_to_user_id_str":"7899342","in_reply_to_screen_name":"mikedao","geo":null,"coordinates":null,"place":{"id":"e898916fab5ef970","url":"https:\/\/api.twitter.com\/1.1\/geo\/id\/e898916fab5ef970.json","place_type":"city","name":"Druid Hills","full_name":"Druid Hills, GA","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-84.348430,33.764646],[-84.305852,33.764646],[-84.305852,33.805668],[-84.348430,33.805668]]]},"attributes":{}},"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"mikedao","name":"Mike Dao","id":7899342,"id_str":"7899342","indices":[0,8]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme14\/bg.gif","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme14\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1886626346\/image_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1886626346\/image_normal.jpg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/6304322\/1350419228","profile_link_color":"009999","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"EFEFEF","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":11088,"id_str":"11088","name":"Mike Vincent","screen_name":"agile","location":"Fort Worth, Texas","description":"crying while coding","url":"http:\/\/cryingwhilecoding.com","entities":{"url":{"urls":[{"url":"http:\/\/cryingwhilecoding.com","expanded_url":null,"indices":[0,28]}]},"description":{"urls":[]}},"protected":false,"followers_count":425,"friends_count":520,"listed_count":29,"created_at":"Mon Oct 30 14:45:05 +0000 2006","favourites_count":2,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":621,"lang":"en","status":{"created_at":"Sat Nov 17 15:54:57 +0000 2012","id":269830995157585920,"id_str":"269830995157585920","text":"http:\/\/t.co\/ZzvBjBHG #wishIwerethere #rupy2012 #awesome 'ver nice! @chastell","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[{"text":"wishIwerethere","indices":[21,36]},{"text":"rupy2012","indices":[37,46]},{"text":"awesome","indices":[47,55]}],"urls":[{"url":"http:\/\/t.co\/ZzvBjBHG","expanded_url":"http:\/\/talks.chastell.net\/rupy-2012","display_url":"talks.chastell.net\/rupy-2012","indices":[0,20]}],"user_mentions":[{"screen_name":"chastell","name":"Piotr Szotkowski","id":6498712,"id_str":"6498712","indices":[67,76]}]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"8B542B","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme8\/bg.gif","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme8\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/189725007\/blacknwhite_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/189725007\/blacknwhite_normal.jpg","profile_link_color":"9D582E","profile_sidebar_border_color":"D9B17E","profile_sidebar_fill_color":"EADEAA","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":343990983,"id_str":"343990983","name":"Arvid Kahl","screen_name":"arvidkahldev","location":"Dresden, Germany","description":"Web Developer from Germany. Node, PHP, Coffeescript. Mac Enthusiast, Gourmet, Political Scientist. Also, Cats. Works for @koding ","url":"http:\/\/www.arvidkahl.de","entities":{"url":{"urls":[{"url":"http:\/\/www.arvidkahl.de","expanded_url":null,"indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":91,"friends_count":779,"listed_count":0,"created_at":"Thu Jul 28 11:30:56 +0000 2011","favourites_count":278,"utc_offset":3600,"time_zone":"Berlin","geo_enabled":false,"verified":false,"statuses_count":227,"lang":"de","status":{"created_at":"Thu Nov 29 04:00:39 +0000 2012","id":273999892618289152,"id_str":"273999892618289152","text":"@cupcakentoots if you send me a direct message (with an email) over twitter, i can take care of this directly.","source":"\u003ca href=\"http:\/\/www.tweetdeck.com\" rel=\"nofollow\"\u003eTweetDeck\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":273906859474309120,"in_reply_to_status_id_str":"273906859474309120","in_reply_to_user_id":974680495,"in_reply_to_user_id_str":"974680495","in_reply_to_screen_name":"cupcakentoots","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"cupcakentoots","name":"Dolan and Gooby","id":974680495,"id_str":"974680495","indices":[0,14]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1465889542\/portraitBW1_small_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1465889542\/portraitBW1_small_normal.jpg","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":966322692,"id_str":"966322692","name":"\u064a\u0648\u0633\u0641 \u0645\u062d\u0645\u062f","screen_name":"yousef621666","location":"\u063a\u0632\u0647","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":32,"friends_count":259,"listed_count":0,"created_at":"Fri Nov 23 15:37:44 +0000 2012","favourites_count":12,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":38,"lang":"ar","status":{"created_at":"Mon Nov 26 20:12:05 +0000 2012","id":273157197494632448,"id_str":"273157197494632448","text":"@mbuyabis \u0627\u0644\u062d\u0645\u062f \u0644\u0644\u0647","source":"web","truncated":false,"in_reply_to_status_id":273156993852792832,"in_reply_to_status_id_str":"273156993852792832","in_reply_to_user_id":223444453,"in_reply_to_user_id_str":"223444453","in_reply_to_screen_name":"mbuyabis","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"mbuyabis","name":"mishari buyabis","id":223444453,"id_str":"223444453","indices":[0,9]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2886078943\/c98a61382d9ca055cc83788346e866a7_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2886078943\/c98a61382d9ca055cc83788346e866a7_normal.jpeg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/966322692\/1353686786","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":963591182,"id_str":"963591182","name":"JBSwagSoldier","screen_name":"JBSwagSoldier","location":"","description":"@JBSwaggySoldier 's second account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":11,"friends_count":50,"listed_count":0,"created_at":"Thu Nov 22 04:08:19 +0000 2012","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":16,"lang":"en","status":{"created_at":"Mon Nov 26 04:13:38 +0000 2012","id":272915997227356161,"id_str":"272915997227356161","text":"My daily stats: 1 new followers, 2 new unfollowers via http:\/\/t.co\/17Si5SiC","source":"\u003ca href=\"http:\/\/justunfollow.com\" rel=\"nofollow\"\u003eJustUnfollow\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/17Si5SiC","expanded_url":"http:\/\/www.justunfollow.com","display_url":"justunfollow.com","indices":[55,75]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"642D8B","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/718158333\/b52e9e0ba1417cb8eec35f27e7a87f64.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/718158333\/b52e9e0ba1417cb8eec35f27e7a87f64.png","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2880197484\/0d69d5ba10554e7ec27ede9ae4a8540e_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2880197484\/0d69d5ba10554e7ec27ede9ae4a8540e_normal.png","profile_link_color":"FF0000","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":220619311,"id_str":"220619311","name":"David Byrd","screen_name":"davidbyrd11","location":"New York","description":"Student @NYUGallatin","url":"http:\/\/byrdhou.se","entities":{"url":{"urls":[{"url":"http:\/\/byrdhou.se","expanded_url":null,"indices":[0,17]}]},"description":{"urls":[]}},"protected":false,"followers_count":134,"friends_count":742,"listed_count":3,"created_at":"Sun Nov 28 09:58:49 +0000 2010","favourites_count":240,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":1159,"lang":"en","status":{"created_at":"Thu Nov 29 18:37:18 +0000 2012","id":274220509502271488,"id_str":"274220509502271488","text":"@AaronCohen Are you teaching a class at NYU this semester?","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":13176752,"in_reply_to_user_id_str":"13176752","in_reply_to_screen_name":"AaronCohen","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"AaronCohen","name":"AaronCohen","id":13176752,"id_str":"13176752","indices":[0,11]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/673750470\/e465c3a21f3378501537146b7eb546a7.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/673750470\/e465c3a21f3378501537146b7eb546a7.png","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2668029543\/24da5c1bbc7fa1580906898c99ae43ff_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2668029543\/24da5c1bbc7fa1580906898c99ae43ff_normal.png","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/220619311\/1349057134","profile_link_color":"333333","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":14981723,"id_str":"14981723","name":"Colin Mutchler","screen_name":"activefree","location":"San Francisco","description":"With the freedom of full self expression comes the full responsibility of being active. Co-Founder of @loudsauce. Musician and poet. ","url":"http:\/\/loudsauce.com","entities":{"url":{"urls":[{"url":"http:\/\/loudsauce.com","expanded_url":null,"indices":[0,20]}]},"description":{"urls":[]}},"protected":false,"followers_count":1168,"friends_count":93,"listed_count":93,"created_at":"Mon Jun 02 16:20:59 +0000 2008","favourites_count":86,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":2026,"lang":"en","status":{"created_at":"Thu Nov 29 16:45:15 +0000 2012","id":274192310848335873,"id_str":"274192310848335873","text":"RT @brainpicker: So great: Will Work For \u2013 @IDEO and @collabfund explore the future of work http:\/\/t.co\/UaBW3EWp Complement with: http:\/ ...","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Thu Nov 29 14:42:43 +0000 2012","id":274161471070547971,"id_str":"274161471070547971","text":"So great: Will Work For \u2013 @IDEO and @collabfund explore the future of work http:\/\/t.co\/UaBW3EWp Complement with: http:\/\/t.co\/zXPBjK6z","source":"\u003ca href=\"http:\/\/bufferapp.com\" rel=\"nofollow\"\u003eBuffer\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":24,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/UaBW3EWp","expanded_url":"http:\/\/j.mp\/V88Dmq","display_url":"j.mp\/V88Dmq","indices":[75,95]},{"url":"http:\/\/t.co\/zXPBjK6z","expanded_url":"http:\/\/j.mp\/yhauf1","display_url":"j.mp\/yhauf1","indices":[113,133]}],"user_mentions":[{"screen_name":"ideo","name":"IDEO","id":23462787,"id_str":"23462787","indices":[26,31]},{"screen_name":"collabfund","name":"Collaborative","id":150016842,"id_str":"150016842","indices":[36,47]}]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"retweet_count":24,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/UaBW3EWp","expanded_url":"http:\/\/j.mp\/V88Dmq","display_url":"j.mp\/V88Dmq","indices":[92,112]}],"user_mentions":[{"screen_name":"brainpicker","name":"Maria Popova","id":9207632,"id_str":"9207632","indices":[3,15]},{"screen_name":"ideo","name":"IDEO","id":23462787,"id_str":"23462787","indices":[43,48]},{"screen_name":"collabfund","name":"Collaborative","id":150016842,"id_str":"150016842","indices":[53,64]}]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"022330","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme15\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme15\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2751780128\/66ef4a61bf559b71d53e4dedb3dc8fb0_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2751780128\/66ef4a61bf559b71d53e4dedb3dc8fb0_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"A8C7F7","profile_sidebar_fill_color":"C0DFEC","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":961585622,"id_str":"961585622","name":"@annisawala","screen_name":"annisa4322","location":"indonesia,medan","description":"be the super girl : love allah swt. , mom n' dad :","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":4,"friends_count":57,"listed_count":0,"created_at":"Wed Nov 21 02:06:44 +0000 2012","favourites_count":1,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":4,"lang":"id","status":{"created_at":"Wed Nov 21 16:04:13 +0000 2012","id":271282878770446336,"id_str":"271282878770446336","text":"@fahmijuhri ,,, \nlebay ko woy.","source":"\u003ca href=\"http:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eMobile Web\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":271268761795960833,"in_reply_to_status_id_str":"271268761795960833","in_reply_to_user_id":228256726,"in_reply_to_user_id_str":"228256726","in_reply_to_screen_name":"FahmiJuhri","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"FahmiJuhri","name":"\u2654 Fahmi Juhri \u2654","id":228256726,"id_str":"228256726","indices":[0,11]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":true,"following":false,"follow_request_sent":false,"notifications":false},{"id":374161242,"id_str":"374161242","name":"Kendrick Lay","screen_name":"kendricklay","location":"Virginia, US","description":"Tech-Startup guy. Entrepreneur. Investor. UVA. \r\nScrew it, Just do it! \r\n\r\n\r\n\r\n\r\n","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":68,"friends_count":216,"listed_count":2,"created_at":"Thu Sep 15 20:25:32 +0000 2011","favourites_count":16,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":130,"lang":"en","status":{"created_at":"Thu Nov 29 07:23:10 +0000 2012","id":274050856855420928,"id_str":"274050856855420928","text":"@nataliardianto ohh gitu.Masalanya blm makin real money itu gara2 payment ato emang indo punya market blm bener2mature buat online shopping?","source":"\u003ca href=\"http:\/\/blackberry.com\/twitter\" rel=\"nofollow\"\u003eTwitter for BlackBerry\u00ae\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":274028426598445056,"in_reply_to_status_id_str":"274028426598445056","in_reply_to_user_id":8424162,"in_reply_to_user_id_str":"8424162","in_reply_to_screen_name":"nataliardianto","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"nataliardianto","name":"Natali Ardianto","id":8424162,"id_str":"8424162","indices":[0,15]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2659837169\/073495d635e4485bf7deaf8a71f1ca84_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2659837169\/073495d635e4485bf7deaf8a71f1ca84_normal.jpeg","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":14439858,"id_str":"14439858","name":"Simon Harris","screen_name":"haruki_zaemon","location":"Tylden, Victoria, Australia","description":"iOS developer and sometimes entrepreneur. One of the guys behind @readtimeapp. I'm hz on http:\/\/t.co\/NjOG4rv1 and I occasionally blog at http:\/\/t.co\/TJt6jSjo.","url":"http:\/\/www.harukizaemon.com\/","entities":{"url":{"urls":[{"url":"http:\/\/www.harukizaemon.com\/","expanded_url":null,"indices":[0,28]}]},"description":{"urls":[{"url":"http:\/\/t.co\/NjOG4rv1","expanded_url":"http:\/\/alpha.app.net","display_url":"alpha.app.net","indices":[89,109]},{"url":"http:\/\/t.co\/TJt6jSjo","expanded_url":"http:\/\/www.harukizaemon.com","display_url":"harukizaemon.com","indices":[137,157]}]}},"protected":false,"followers_count":703,"friends_count":452,"listed_count":45,"created_at":"Sat Apr 19 02:24:16 +0000 2008","favourites_count":4,"utc_offset":36000,"time_zone":"Melbourne","geo_enabled":true,"verified":false,"statuses_count":22625,"lang":"en","status":{"created_at":"Thu Nov 29 12:21:03 +0000 2012","id":274125822464503811,"id_str":"274125822464503811","text":"Feels like its been a week of rookie mistakes for me.","source":"\u003ca href=\"http:\/\/www.apple.com\" rel=\"nofollow\"\u003eiOS\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/53716610\/Simon_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/53716610\/Simon_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":4220161,"id_str":"4220161","name":"skylar woodward","screen_name":"skylar","location":"San Francisco","description":"Builder, biker, climber, maker. I \u2665 coffee, Kiva and SF.","url":"http:\/\/larw.com\/","entities":{"url":{"urls":[{"url":"http:\/\/larw.com\/","expanded_url":null,"indices":[0,16]}]},"description":{"urls":[]}},"protected":false,"followers_count":834,"friends_count":333,"listed_count":41,"created_at":"Wed Apr 11 18:14:11 +0000 2007","favourites_count":60,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":1770,"lang":"en","status":{"created_at":"Wed Nov 28 23:43:43 +0000 2012","id":273935233571758080,"id_str":"273935233571758080","text":"Just won a pony. http:\/\/t.co\/0ZLYMium","source":"\u003ca href=\"http:\/\/instagr.am\" rel=\"nofollow\"\u003eInstagram\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/0ZLYMium","expanded_url":"http:\/\/instagr.am\/p\/Sl5G06yaGy\/","display_url":"instagr.am\/p\/Sl5G06yaGy\/","indices":[17,37]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"FCEBB6","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/574263957\/x3d378cd13a68ea5aefc902f86ff243f.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/574263957\/x3d378cd13a68ea5aefc902f86ff243f.png","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1314219041\/london_tube_sq_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1314219041\/london_tube_sq_normal.jpg","profile_link_color":"5E412F","profile_sidebar_border_color":"F0A830","profile_sidebar_fill_color":"78C0A8","profile_text_color":"CE7834","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":45569415,"id_str":"45569415","name":"Andrew Flockhart","screen_name":"andruflockhart","location":"NYC","description":"100101010000","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":433,"friends_count":322,"listed_count":13,"created_at":"Mon Jun 08 13:56:29 +0000 2009","favourites_count":54,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":903,"lang":"en","status":{"created_at":"Tue Nov 27 21:44:15 +0000 2012","id":273542779588734976,"id_str":"273542779588734976","text":"RT @YungPeng: never accept a job or career that u can't wear ur rave kandi 2","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Tue Nov 27 21:34:02 +0000 2012","id":273540207318532097,"id_str":"273540207318532097","text":"never accept a job or career that u can't wear ur rave kandi 2","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":7,"entities":{"hashtags":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false},"retweet_count":7,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"YungPeng","name":"\u2022 FR\u2206NK\u00d8 \u2206LI \u2022","id":25201460,"id_str":"25201460","indices":[3,12]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme14\/bg.gif","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme14\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/425003138\/rvin_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/425003138\/rvin_normal.jpg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/45569415\/1348757066","profile_link_color":"009999","profile_sidebar_border_color":"EEEEEE","profile_sidebar_fill_color":"EFEFEF","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":42559115,"id_str":"42559115","name":"Josh Miller","screen_name":"joshm","location":"New York, NY","description":"Building @Branch. Former rising senior at @Princeton. Born and raised in Santa Monica. I ask a lot of questions.","url":"http:\/\/t.co\/uHQdLI6v","entities":{"url":{"urls":[{"url":"http:\/\/t.co\/uHQdLI6v","expanded_url":"http:\/\/joshm.co\/about\/","display_url":"joshm.co\/about\/","indices":[0,20]}]},"description":{"urls":[]}},"protected":false,"followers_count":2388,"friends_count":198,"listed_count":79,"created_at":"Tue May 26 03:54:46 +0000 2009","favourites_count":1484,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":2695,"lang":"en","status":{"created_at":"Thu Nov 29 21:12:06 +0000 2012","id":274259465002418176,"id_str":"274259465002418176","text":"Bret Victor's \"Ten Brighter Ideas,\" Robin Sloan's \"Fish,\" & Craig Mod's \"Subcompact Publishing.\" The UI should be tailored to the content.","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/117710171\/14089.JPG","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/117710171\/14089.JPG","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1581135033\/josh_miller_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1581135033\/josh_miller_normal.png","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/42559115\/1348349087","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":17110657,"id_str":"17110657","name":"Tal Safran","screen_name":"talsafran","location":"Brooklyn, NY","description":"Developer and person.","url":"http:\/\/tal.im","entities":{"url":{"urls":[{"url":"http:\/\/tal.im","expanded_url":null,"indices":[0,13]}]},"description":{"urls":[]}},"protected":false,"followers_count":979,"friends_count":503,"listed_count":63,"created_at":"Sun Nov 02 04:31:23 +0000 2008","favourites_count":530,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":4701,"lang":"en","status":{"created_at":"Thu Nov 29 19:10:22 +0000 2012","id":274228827478192129,"id_str":"274228827478192129","text":"@pklug Sure, blame it on the mustache :)\n\nDid you handlebar it again?","source":"web","truncated":false,"in_reply_to_status_id":274211393442574336,"in_reply_to_status_id_str":"274211393442574336","in_reply_to_user_id":21379175,"in_reply_to_user_id_str":"21379175","in_reply_to_screen_name":"pklug","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"pklug","name":"Phillip Klugman","id":21379175,"id_str":"21379175","indices":[0,6]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"EDECE9","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/190901346\/bg-stripe.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/190901346\/bg-stripe.png","profile_background_tile":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1316038288\/apartmnet_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1316038288\/apartmnet_normal.jpg","profile_link_color":"088253","profile_sidebar_border_color":"D3D2CF","profile_sidebar_fill_color":"E3E2DE","profile_text_color":"634047","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":306117941,"id_str":"306117941","name":"Johnneylee Rollins","screen_name":"JLeeGhost","location":"Atlanta, Georgia","description":"Duck whisperer, Sourcerer esq., Rubyist","url":"http:\/\/Spaceghost.github.com\/","entities":{"url":{"urls":[{"url":"http:\/\/Spaceghost.github.com\/","expanded_url":null,"indices":[0,29]}]},"description":{"urls":[]}},"protected":false,"followers_count":110,"friends_count":404,"listed_count":4,"created_at":"Fri May 27 09:43:58 +0000 2011","favourites_count":25,"utc_offset":-18000,"time_zone":"Eastern Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":1405,"lang":"en","status":{"created_at":"Thu Nov 29 16:40:05 +0000 2012","id":274191008986693632,"id_str":"274191008986693632","text":"@andrzejkrzywda Personally, I've been working on building my apps closer to a domain-centric model. The rest is service based.","source":"web","truncated":false,"in_reply_to_status_id":274166908499161088,"in_reply_to_status_id_str":"274166908499161088","in_reply_to_user_id":8067312,"in_reply_to_user_id_str":"8067312","in_reply_to_screen_name":"andrzejkrzywda","geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"andrzejkrzywda","name":"Andrzej Krzywda","id":8067312,"id_str":"8067312","indices":[0,15]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"1A1B1F","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme9\/bg.gif","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme9\/bg.gif","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1370810672\/SpaceGhost_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1370810672\/SpaceGhost_normal.jpg","profile_link_color":"2FC2EF","profile_sidebar_border_color":"181A1E","profile_sidebar_fill_color":"252429","profile_text_color":"666666","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},{"id":947101075,"id_str":"947101075","name":"REMY ON THE BEAT","screen_name":"remyonthebeat","location":"","description":"FOLLOW MY NEW TWITTER \r\nhttp:\/\/t.co\/cTGy5OX6\r\nhttp:\/\/t.co\/cTGy5OX6\r\nhttp:\/\/t.co\/cTGy5OX6\r\n","url":null,"entities":{"description":{"urls":[{"url":"http:\/\/t.co\/cTGy5OX6","expanded_url":"http:\/\/WWW.TWITTER.COM\/REMYONTHETRACK","display_url":"TWITTER.COM\/REMYONTHETRACK","indices":[24,44]},{"url":"http:\/\/t.co\/cTGy5OX6","expanded_url":"http:\/\/WWW.TWITTER.COM\/REMYONTHETRACK","display_url":"TWITTER.COM\/REMYONTHETRACK","indices":[46,66]},{"url":"http:\/\/t.co\/cTGy5OX6","expanded_url":"http:\/\/WWW.TWITTER.COM\/REMYONTHETRACK","display_url":"TWITTER.COM\/REMYONTHETRACK","indices":[68,88]}]}},"protected":false,"followers_count":705,"friends_count":1464,"listed_count":0,"created_at":"Wed Nov 14 05:13:21 +0000 2012","favourites_count":0,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":8,"lang":"en","status":{"created_at":"Sun Nov 25 04:37:43 +0000 2012","id":272559668465901568,"id_str":"272559668465901568","text":"follow my new twitter @remyonthetrack","source":"web","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[],"user_mentions":[{"screen_name":"remyonthetrack","name":"REMY ON THE TRACK","id":17717793,"id_str":"17717793","indices":[22,37]}]},"favorited":false,"retweeted":false},"contributors_enabled":false,"is_translator":false,"profile_background_color":"FFFFFF","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_link_color":"70CAE0","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":false,"default_profile":false,"default_profile_image":true,"following":false,"follow_request_sent":false,"notifications":false}],"next_cursor":1418947360875712729,"next_cursor_str":"1418947360875712729","previous_cursor":0,"previous_cursor_str":"0"} \ No newline at end of file diff --git a/spec/twitter/api/friends_and_followers_spec.rb b/spec/twitter/api/friends_and_followers_spec.rb index c29cc6829..e035107da 100644 --- a/spec/twitter/api/friends_and_followers_spec.rb +++ b/spec/twitter/api/friends_and_followers_spec.rb @@ -421,5 +421,77 @@ end end end + + + + + describe "#friend_ids" do + context "with a screen_name passed" do + before do + stub_get("/1.1/friends/ids.json").with(:query => {:cursor => "-1", :screen_name => "sferik"}).to_return(:body => fixture("ids_list.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + end + it "requests the correct resource" do + @client.friend_ids("sferik") + expect(a_get("/1.1/friends/ids.json").with(:query => {:cursor => "-1", :screen_name => "sferik"})).to have_been_made + end + it "returns an array of numeric IDs for every user the specified user is following" do + friend_ids = @client.friend_ids("sferik") + expect(friend_ids).to be_a Twitter::Cursor + expect(friend_ids.ids).to be_an Array + expect(friend_ids.ids.first).to eq 14100886 + end + end + context "without arguments passed" do + before do + stub_get("/1.1/friends/ids.json").with(:query => {:cursor => "-1"}).to_return(:body => fixture("ids_list.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + end + it "requests the correct resource" do + @client.friend_ids + expect(a_get("/1.1/friends/ids.json").with(:query => {:cursor => "-1"})).to have_been_made + end + it "returns an array of numeric IDs for every user the specified user is following" do + friend_ids = @client.friend_ids + expect(friend_ids).to be_a Twitter::Cursor + expect(friend_ids.ids).to be_an Array + expect(friend_ids.ids.first).to eq 14100886 + end + end + end + + + + describe "#followers" do + end + + describe "#friends" do + context "with a screen_name passed" do + before do + stub_get("/1.1/friends/list.json").with(:query => {:cursor => "-1", :screen_name => "sferik"}).to_return(:body => fixture("friends_list.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + end + it "requests the correct resource" do + @client.friends("sferik") + expect(a_get("/1.1/friends/list.json").with(:query => {:cursor => "-1", :screen_name => "sferik"})).to have_been_made + end + # it "returns an array of followers with details for every user the specified user is following" do + # friends = @client.friends + # + # end + # end + # context "without arguments passed" do + # before do + # stub_get("/1.1/friends/list.json").with(:query => {:cursor => "-1"}).to_return(:body => fixture("friends_list.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + # end + # it "requests the correct resource" do + # @client.friends + # expect(a_get("/1.1/friends/list.json").with(:query => {:cursor => "-1"})).to have_been_made + # end + # it "returns an array of followers with details for every user the specified user is following" do + # friends = @client.friends + # expect(friends.first).to be_a Twitter::User + # expect(friends).to be_an Array + # end + end + end + end