twitter-lists 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +22 -0
- data/LICENSE +20 -0
- data/README.rdoc +42 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/lib/twitter-lists/list.rb +71 -0
- data/lib/twitter-lists.rb +2 -0
- data/test/fixtures/ivey-hah-members-p2.json +23 -0
- data/test/fixtures/ivey-hah-members.json +23 -0
- data/test/helper.rb +22 -0
- data/test/test_list.rb +124 -0
- metadata +117 -0
data/.document
ADDED
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Michael D. Ivey
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
= twitter-lists
|
2
|
+
|
3
|
+
A library and command-line tool for working with Twitter lists.
|
4
|
+
|
5
|
+
* Set-based operations on lists, so you can, for instance,
|
6
|
+
make a list that is the union of two other lists.
|
7
|
+
* Command-line tool (twls) to manage list memberships
|
8
|
+
* Currently uses jnunemaker's twitter gem, but planned support
|
9
|
+
for twitter-auth as well.
|
10
|
+
|
11
|
+
NOTE: currently requires a patch to the twitter gem to get more
|
12
|
+
than 20 members
|
13
|
+
|
14
|
+
== Usage
|
15
|
+
|
16
|
+
* Standalone:
|
17
|
+
Twitter::List.setup_basic_auth "username", "password"
|
18
|
+
|
19
|
+
* Integration with an existing app using the Twitter gem
|
20
|
+
my_twitter_client = .... # Some method to access a configured Twitter::Base
|
21
|
+
Twitter::List.twitter_base = my_twitter_client
|
22
|
+
|
23
|
+
list = Twitter::List.parse "@ivey/hah"
|
24
|
+
list.load_members
|
25
|
+
list.members
|
26
|
+
|
27
|
+
Twitter::List.union "@ivey/hah", "@Favstar/rising-stars"
|
28
|
+
|
29
|
+
== Note on Patches/Pull Requests
|
30
|
+
|
31
|
+
* Fork the project.
|
32
|
+
* Make your feature addition or bug fix.
|
33
|
+
* Add tests for it. This is important so I don't break it in a
|
34
|
+
future version unintentionally.
|
35
|
+
* Commit, do not mess with rakefile, version, or history.
|
36
|
+
(if you want to have your own version, that is fine but bump
|
37
|
+
version in a commit by itself I can ignore when I pull)
|
38
|
+
* Send me a pull request. Bonus points for topic branches.
|
39
|
+
|
40
|
+
== Copyright
|
41
|
+
|
42
|
+
Copyright (c) 2009 Michael D. Ivey. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "twitter-lists"
|
8
|
+
gem.summary = %Q{A library and command-line tool for working with Twitter lists.}
|
9
|
+
gem.description = %Q{A library and command-line tool for working with Twitter lists}
|
10
|
+
gem.email = "ivey@gweezlebur.com"
|
11
|
+
gem.homepage = "http://github.com/ivey/twitter-lists"
|
12
|
+
gem.authors = ["Michael D. Ivey"]
|
13
|
+
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
|
+
gem.add_development_dependency "jnunemaker-matchy", ">= 0"
|
15
|
+
gem.add_development_dependency "jeremymcanally-context", ">= 0"
|
16
|
+
gem.add_development_dependency "jeremymcanally-stump", ">= 0"
|
17
|
+
gem.add_development_dependency "fakeweb", ">= 0"
|
18
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
19
|
+
end
|
20
|
+
Jeweler::GemcutterTasks.new
|
21
|
+
rescue LoadError
|
22
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
23
|
+
end
|
24
|
+
|
25
|
+
require 'rake/testtask'
|
26
|
+
Rake::TestTask.new(:test) do |test|
|
27
|
+
test.libs << 'lib' << 'test'
|
28
|
+
test.pattern = 'test/**/test_*.rb'
|
29
|
+
test.verbose = true
|
30
|
+
end
|
31
|
+
|
32
|
+
begin
|
33
|
+
require 'rcov/rcovtask'
|
34
|
+
Rcov::RcovTask.new do |test|
|
35
|
+
test.libs << 'test'
|
36
|
+
test.pattern = 'test/**/test_*.rb'
|
37
|
+
test.verbose = true
|
38
|
+
end
|
39
|
+
rescue LoadError
|
40
|
+
task :rcov do
|
41
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
task :test => :check_dependencies
|
46
|
+
|
47
|
+
task :default => :test
|
48
|
+
|
49
|
+
require 'rake/rdoctask'
|
50
|
+
Rake::RDocTask.new do |rdoc|
|
51
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
52
|
+
|
53
|
+
rdoc.rdoc_dir = 'rdoc'
|
54
|
+
rdoc.title = "twitter-lists #{version}"
|
55
|
+
rdoc.rdoc_files.include('README*')
|
56
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
57
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'set'
|
2
|
+
module Twitter
|
3
|
+
class List
|
4
|
+
|
5
|
+
attr_accessor :id, :name, :user, :description, :members
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def twitter_base
|
9
|
+
@twitter_base
|
10
|
+
end
|
11
|
+
|
12
|
+
def twitter_base=(base)
|
13
|
+
@twitter_base=base
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup_basic_auth(username, password)
|
17
|
+
self.twitter_base = Twitter::Base.new(Twitter::HTTPAuth.new(username, password))
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse(str)
|
21
|
+
n= new
|
22
|
+
n.user, n.name = str.sub(/^@/,'').split('/')
|
23
|
+
n
|
24
|
+
end
|
25
|
+
|
26
|
+
def union(*lists)
|
27
|
+
lists = lists.collect { |l| l.is_a?(List) ? l : parse(l) }
|
28
|
+
sets = lists.collect { |l| Set.new l.members }
|
29
|
+
sets.inject { |u,s| s.union u }.to_a
|
30
|
+
end
|
31
|
+
|
32
|
+
def intersection(*lists)
|
33
|
+
lists = lists.collect { |l| l.is_a?(List) ? l : parse(l) }
|
34
|
+
sets = lists.collect { |l| Set.new l.members }
|
35
|
+
sets.inject { |i,s| s.intersection i }.to_a
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def twitter_base
|
40
|
+
self.class.twitter_base
|
41
|
+
end
|
42
|
+
|
43
|
+
def load_members
|
44
|
+
self.members = load_members_paged.collect { |x| [x.id, x.screen_name] }
|
45
|
+
end
|
46
|
+
|
47
|
+
def member_names
|
48
|
+
members.collect { |x| username(x) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def member_ids
|
52
|
+
members.collect { |x| userid(x) }
|
53
|
+
end
|
54
|
+
|
55
|
+
def load_members_paged(acc=[],cursor=-1)
|
56
|
+
response = twitter_base.list_members(user,name,cursor)
|
57
|
+
acc += response.users
|
58
|
+
response.next_cursor == 0 ? acc : load_members_paged(acc,response.next_cursor)
|
59
|
+
end
|
60
|
+
|
61
|
+
protected
|
62
|
+
def username(l)
|
63
|
+
l[1]
|
64
|
+
end
|
65
|
+
|
66
|
+
def userid(l)
|
67
|
+
l[0]
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Date: Mon, 30 Nov 2009 19:18:13 GMT
|
3
|
+
Server: hi
|
4
|
+
X-RateLimit-Limit: 150
|
5
|
+
X-Transaction: 1259608693-7574-22655
|
6
|
+
Status: 200 OK
|
7
|
+
ETag: "d4e12c5655b231fa23a211bfee963e26"
|
8
|
+
Last-Modified: Mon, 30 Nov 2009 19:18:13 GMT
|
9
|
+
X-RateLimit-Remaining: 118
|
10
|
+
X-Runtime: 0.04018
|
11
|
+
Content-Type: application/json; charset=utf-8
|
12
|
+
Pragma: no-cache
|
13
|
+
Content-Length: 1370
|
14
|
+
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
|
15
|
+
Expires: Tue, 31 Mar 1981 05:00:00 GMT
|
16
|
+
X-Revision: DEV
|
17
|
+
X-RateLimit-Reset: 1259610494
|
18
|
+
Set-Cookie: lang=en; path=/
|
19
|
+
Set-Cookie: _twitter_sess=BAh7CjoTcGFzc3dvcmRfdG9rZW4iLTBlYzYwODE5MmU1Y2M4NmU1MDhjYzE0%250AOWE0Y2MzODFhMGZmYzI4NjI6EXRyYW5zX3Byb21wdDA6CXVzZXJpAtcqOgdp%250AZCIlM2U0ZGRhMGEyYjE0MDllMzFiMmVjZWUxZmE0MGJiNTEiCmZsYXNoSUM6%250AJ0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2Vk%250AewA%253D--f464f0ad20d50938d8e77b12b26c182de3a29793; domain=.twitter.com; path=/
|
20
|
+
Vary: Accept-Encoding
|
21
|
+
Connection: close
|
22
|
+
|
23
|
+
{"users":[{"verified":false,"profile_sidebar_fill_color":"F3F3F3","description":"Style tips for proper writing. contact: fakeapstylebook at gmail dot com. No submissions, please.","screen_name":"FakeAPStylebook","followers_count":66732,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.hootsuite.com\" rel=\"nofollow\">HootSuite</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 19:01:28 +0000 2009","id":6209864396,"text":"Do not use the term \"press conference.\" Call the event a \"news conference,\" a \"sham\" or \"slopping the hogs.\""},"following":true,"time_zone":"Central Time (US & Canada)","profile_sidebar_border_color":"DFDFDF","friends_count":20,"notifications":false,"favourites_count":0,"profile_text_color":"333333","url":null,"profile_background_image_url":"http://a1.twimg.com/profile_background_images/47626304/fakeapbg__1_.gif","statuses_count":510,"profile_link_color":"990000","protected":false,"profile_background_tile":false,"created_at":"Tue Oct 20 17:06:49 +0000 2009","location":"","name":"Fake AP Stylebook","geo_enabled":false,"profile_background_color":"EBEBEB","profile_image_url":"http://a1.twimg.com/profile_images/486242668/ap-interro_normal.jpg","id":83883736,"utc_offset":-21600}], "next_cursor":0, "previous_cursor":-1317534510543023567 }
|
@@ -0,0 +1,23 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Date: Mon, 30 Nov 2009 18:06:40 GMT
|
3
|
+
Server: hi
|
4
|
+
X-RateLimit-Limit: 150
|
5
|
+
X-Transaction: 1259604400-88756-3956
|
6
|
+
Status: 200 OK
|
7
|
+
ETag: "7c1be64d3bc8781e1a6e7ec85cc76bb4"
|
8
|
+
Last-Modified: Mon, 30 Nov 2009 18:06:40 GMT
|
9
|
+
X-RateLimit-Remaining: 128
|
10
|
+
X-Runtime: 1.05233
|
11
|
+
Content-Type: application/json; charset=utf-8
|
12
|
+
Pragma: no-cache
|
13
|
+
Content-Length: 24918
|
14
|
+
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
|
15
|
+
Expires: Tue, 31 Mar 1981 05:00:00 GMT
|
16
|
+
X-Revision: DEV
|
17
|
+
X-RateLimit-Reset: 1259606894
|
18
|
+
Set-Cookie: lang=en; path=/
|
19
|
+
Set-Cookie: _twitter_sess=BAh7CjoTcGFzc3dvcmRfdG9rZW4iLTBlYzYwODE5MmU1Y2M4NmU1MDhjYzE0%250AOWE0Y2MzODFhMGZmYzI4NjI6EXRyYW5zX3Byb21wdDA6CXVzZXJpAtcqOgdp%250AZCIlYTM2YWZkODU3ODE2ZDliMWIyZDNhYTk0YjVkNmNmNGUiCmZsYXNoSUM6%250AJ0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2Vk%250AewA%253D--df4028b2b29cf6aeedcbb98f8090e6e0abe5137f; domain=.twitter.com; path=/
|
20
|
+
Vary: Accept-Encoding
|
21
|
+
Connection: close
|
22
|
+
|
23
|
+
{"users":[{"profile_sidebar_fill_color":"37a147","description":"Just a shotgun and a rocking chair between me and the hoosgow.","screen_name":"angryoldcoot","friends_count":181,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://ubertwitter.com\" rel=\"nofollow\">UberTwitter</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 14:33:54 +0000 2009","id":6202705319,"text":"Instead of my office, I'm going to an offsite training. It's like a vacay halfway house! I hope my ankle bracelet's red to go with my eyes."},"following":false,"statuses_count":564,"time_zone":"Central Time (US & Canada)","profile_sidebar_border_color":"9e132a","notifications":false,"favourites_count":3956,"geo_enabled":false,"profile_text_color":"333333","url":"http://favstar.fm/users/angryoldcoot/recent","profile_background_image_url":"http://a1.twimg.com/profile_background_images/50065810/tf2_alpine_concept.jpg","verified":false,"profile_link_color":"bd171f","protected":false,"profile_background_tile":true,"created_at":"Mon Aug 31 18:10:52 +0000 2009","location":"","name":"Angry Old Coot","profile_background_color":"084dd6","profile_image_url":"http://a1.twimg.com/profile_images/503867858/funny_face_old_man34_normal.jpg","id":70458837,"utc_offset":-21600,"followers_count":389},{"profile_sidebar_fill_color":"ecfada","description":"Used to give out welcome messages, but not since I SOLD OUT. averyedison[at]gmail[dot]com","screen_name":"aedison","followers_count":5232,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://birdhouseapp.com\" rel=\"nofollow\">Birdhouse</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 16:59:16 +0000 2009","id":6206627271,"text":"Going down to the tattoo parlor. Don't need any more ink, but they just create such a warm and not-at-all-terrifying atmosphere, you know?"},"following":null,"statuses_count":1507,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"ffffff","friends_count":231,"notifications":null,"favourites_count":12127,"profile_text_color":"051a01","url":"http://www.averyedison.com","profile_background_image_url":"http://a1.twimg.com/profile_background_images/56001290/background.jpg","geo_enabled":false,"profile_link_color":"1a8005","protected":false,"profile_background_tile":true,"created_at":"Mon Mar 19 04:26:41 +0000 2007","location":"Wareham, Dorset, UK","name":"Avery Edison","verified":false,"profile_background_color":"043301","profile_image_url":"http://a3.twimg.com/profile_images/543838825/DSC01581_normal.JPG","id":1471021,"utc_offset":-18000},{"profile_sidebar_fill_color":"afcade","description":"I'm a copywriter for a major greeting card company. I get bored and create cards I know we'll never print. These are those cards. ","screen_name":"RejectedCards","notifications":false,"favourites_count":0,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.hootsuite.com\" rel=\"nofollow\">HootSuite</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 16:17:49 +0000 2009","id":6205507693,"text":"Happy Holidays, Mom. I admire how you've never tried to live up to anyone else's expectations but your own. Including your Holiday cooking"},"following":false,"time_zone":"Central Time (US & Canada)","profile_sidebar_border_color":"a8c7f7","statuses_count":52,"geo_enabled":false,"profile_text_color":"333333","url":"http://www.facebook.com/RejectedGreetingCards","profile_background_image_url":"http://a1.twimg.com/profile_background_images/50175700/IMG_0657.JPG","verified":false,"profile_link_color":"0084B4","protected":false,"profile_background_tile":true,"created_at":"Sun Nov 01 18:26:06 +0000 2009","followers_count":2886,"location":"USA","name":"Rejected Cards","profile_background_color":"022330","profile_image_url":"http://a3.twimg.com/profile_images/502966305/photo_3__normal.jpg","id":86772969,"utc_offset":-21600,"friends_count":3082},{"profile_sidebar_fill_color":"fae17d","followers_count":2841,"description":"awesome at alliterations.","screen_name":"baileygenine","status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://birdhouseapp.com\" rel=\"nofollow\">Birdhouse</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 16:31:58 +0000 2009","id":6205893144,"text":"Christmas tree shopping is so arbortrary."},"following":false,"time_zone":"Pacific Time (US & Canada)","friends_count":228,"profile_sidebar_border_color":"181A1E","geo_enabled":false,"notifications":false,"profile_text_color":"610e10","url":"http://baileygenine.tumblr.com","verified":false,"statuses_count":2013,"profile_background_image_url":"http://a3.twimg.com/profile_background_images/24946329/WaynePaint.jpg","profile_link_color":"851603","protected":false,"profile_background_tile":true,"created_at":"Thu Dec 04 09:34:06 +0000 2008","location":"San Francisco, CA","name":"Bailey","profile_background_color":"1a1300","profile_image_url":"http://a1.twimg.com/profile_images/550770890/bg_normal.png","id":17864230,"utc_offset":-28800,"favourites_count":22705},{"profile_sidebar_fill_color":"DAECF4","description":"The Official Michael Ian Black Twitter Page","screen_name":"michaelianblack","notifications":false,"favourites_count":1,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 03:55:15 +0000 2009","id":6191060690,"text":"Just watched \"Bride Wars\" with my wife. Time to start cutting myself so I know I can feel again."},"following":false,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"C6E2EE","statuses_count":1740,"geo_enabled":false,"profile_text_color":"663B12","url":"http://michaelianblack.net","profile_background_image_url":"http://a1.twimg.com/profile_background_images/28544372/15rUYi.jpg","verified":true,"profile_link_color":"1F98C7","protected":false,"profile_background_tile":false,"created_at":"Mon Feb 16 22:15:15 +0000 2009","followers_count":1436034,"location":"Land of Go For It! ","name":"Michael Ian Black","profile_background_color":"C6E2EE","profile_image_url":"http://a3.twimg.com/profile_images/434712703/Photo_194_normal.jpg","id":21035409,"utc_offset":-18000,"friends_count":88},{"profile_sidebar_fill_color":"F3F3F3","description":"Cockblocking beats","screen_name":"fireland","followers_count":25575,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Thu Nov 19 20:59:11 +0000 2009","id":5868588181,"text":"I'm already 350 pounds, sleeping in my car, and doing a lot of speed. Do I really need to get some kind of special license to be a trucker?"},"following":false,"statuses_count":590,"time_zone":"Mountain Time (US & Canada)","profile_sidebar_border_color":"DFDFDF","friends_count":140,"notifications":false,"favourites_count":546,"profile_text_color":"333333","url":"http://www.fireland.com/","profile_background_image_url":"http://a1.twimg.com/profile_background_images/4036666/plaid.gif","geo_enabled":false,"profile_link_color":"990000","protected":false,"profile_background_tile":true,"created_at":"Mon Jan 15 21:55:37 +0000 2007","location":"Denver","name":"Joshua Allen","verified":false,"profile_background_color":"EBEBEB","profile_image_url":"http://a3.twimg.com/profile_images/367883407/farm_normal.jpg","id":639643,"utc_offset":-25200},{"verified":false,"geo_enabled":false,"profile_sidebar_fill_color":"047ca4","description":"reformed optimist","screen_name":"hoosiergirl","notifications":null,"statuses_count":1442,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Sat Nov 28 21:18:11 +0000 2009","id":6151129062,"text":"Time to lay off the leftovers. I've been lying down dozing & feeling the babies kick til I came to & realized they were born 2 weeks ago."},"following":null,"time_zone":"Central Time (US & Canada)","friends_count":164,"profile_sidebar_border_color":"076188","profile_text_color":"1e0557","url":null,"profile_background_image_url":"http://a1.twimg.com/profile_background_images/3875264/lights.jpg","followers_count":2229,"profile_link_color":"1a2428","protected":false,"profile_background_tile":true,"created_at":"Wed Mar 19 00:11:44 +0000 2008","location":"evansville, indiana","name":"hoosiergirl","profile_background_color":"093d53","profile_image_url":"http://a3.twimg.com/profile_images/60746143/hoosiergirl_normal.JPG","id":14173542,"utc_offset":-21600,"favourites_count":6089},{"profile_sidebar_fill_color":"FFFFFF","description":"i love breaking news. and apples.","screen_name":"echuckles","followers_count":2351,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Tue Nov 24 23:13:42 +0000 2009","id":6022581868,"text":"the drugstore sells condoms behind the counter with a big sign that says LATEX BALLOONS. they also sell balloons back there, but, um, wow."},"following":false,"statuses_count":1522,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"6D1F23","friends_count":232,"notifications":false,"favourites_count":856,"profile_text_color":"6D1F23","url":"http://www.flickr.com/photos/nochuckingaround/3622527299/","profile_background_image_url":"http://a1.twimg.com/profile_background_images/4619280/bkgd.jpg","geo_enabled":false,"profile_link_color":"6D1F23","protected":false,"profile_background_tile":false,"created_at":"Fri Dec 22 03:04:51 +0000 2006","location":"usually 30 Rock.","name":"Elizabeth Chuck","verified":false,"profile_background_color":"FFCCCC","profile_image_url":"http://a1.twimg.com/profile_images/51502776/red_red_wine_normal.JPG","id":145313,"utc_offset":-18000},{"profile_sidebar_fill_color":"e0ff92","description":"I blogged before rafeco.","screen_name":"gknauss","friends_count":124,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://birdhouseapp.com\" rel=\"nofollow\">Birdhouse</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 06:00:00 +0000 2009","id":6193880634,"text":"\"We've false-colored the infrared on the images that the perimeter-defense satellites have sent back, so you can clearly see the clown.\""},"following":false,"statuses_count":1998,"time_zone":"Pacific Time (US & Canada)","profile_sidebar_border_color":"87bc44","notifications":false,"favourites_count":433,"geo_enabled":false,"profile_text_color":"000000","url":"http://www.eod.com","profile_background_image_url":"http://a3.twimg.com/profile_background_images/48272213/back.gif","verified":false,"profile_link_color":"0000ff","protected":false,"profile_background_tile":true,"created_at":"Sun Apr 01 23:07:06 +0000 2007","location":"","name":"Greg Knauss","profile_background_color":"9ae4e8","profile_image_url":"http://a1.twimg.com/profile_images/38137892/greg-icon-128_normal.gif","id":3163591,"utc_offset":-28800,"followers_count":2021},{"profile_sidebar_fill_color":"e0ff92","description":"The savior of all, for all.","screen_name":"JesusGoneViral","notifications":false,"favourites_count":0,"status":{"in_reply_to_user_id":14184328,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.twhirl.org/\" rel=\"nofollow\">twhirl</a>","favorited":false,"in_reply_to_screen_name":"Gillis57","created_at":"Sun May 24 19:57:39 +0000 2009","id":1905338998,"text":"@Gillis57 check"},"following":false,"time_zone":"Central Time (US & Canada)","profile_sidebar_border_color":"87bc44","statuses_count":41,"geo_enabled":false,"profile_text_color":"000000","url":null,"profile_background_image_url":"http://a3.twimg.com/profile_background_images/2933549/Cross_Hill_Morning.jpg","verified":false,"profile_link_color":"0000ff","protected":false,"profile_background_tile":false,"created_at":"Mon Aug 25 22:16:56 +0000 2008","followers_count":671,"location":"Omnipresent","name":"JesusGoneViral","profile_background_color":"9ae4e8","profile_image_url":"http://a1.twimg.com/profile_images/58888266/jesus_normal.jpg","id":15988295,"utc_offset":-21600,"friends_count":1090},{"profile_sidebar_fill_color":"9AB5B6","description":"Hey, turtleface. Want a peanut? sprattacus [at] gmail","screen_name":"CcSteff","friends_count":194,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.atebits.com/\" rel=\"nofollow\">Tweetie</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Sun Nov 29 21:49:14 +0000 2009","id":6181041046,"text":"The state flower of Ohio is ranch dressing."},"following":null,"statuses_count":2866,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"9AB5B6","notifications":null,"favourites_count":34495,"geo_enabled":false,"profile_text_color":"333333","url":null,"profile_background_image_url":"http://a1.twimg.com/profile_background_images/4063824/background.jpg","verified":false,"profile_link_color":"0084B4","protected":false,"profile_background_tile":false,"created_at":"Tue Apr 08 21:26:46 +0000 2008","location":"Richmond, VA","name":"Stephanie","profile_background_color":"9ab5b6","profile_image_url":"http://a1.twimg.com/profile_images/63340206/twittah_normal.jpg","id":14336349,"utc_offset":-18000,"followers_count":4404},{"profile_sidebar_fill_color":"A0C5C7","description":"Comedian/Writer/Lady","screen_name":"Lizinhollywood","friends_count":53,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Sun Nov 29 21:58:34 +0000 2009","id":6181268618,"text":"I'm pretty sure all the other days of the week are jealous of Sunday. #bestdayoftheweek"},"following":false,"statuses_count":501,"time_zone":"Tehran","profile_sidebar_border_color":"86A4A6","notifications":false,"favourites_count":3,"geo_enabled":false,"profile_text_color":"333333","url":"http://myspace.com/lizinhollywood","profile_background_image_url":"http://s.twimg.com/a/1258570280/images/themes/theme6/bg.gif","verified":false,"profile_link_color":"233295","protected":false,"profile_background_tile":false,"created_at":"Mon Jan 26 00:22:48 +0000 2009","location":"Tehran, CA","name":"Liz Feldman","profile_background_color":"709397","profile_image_url":"http://a1.twimg.com/profile_images/335072330/8M5U4194_8x10_normal.jpg","id":19512616,"utc_offset":12600,"followers_count":9241},{"profile_sidebar_fill_color":"e8e8e8","description":"Rap is a poetry of sorts.","screen_name":"snacksandshit","statuses_count":694,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.atebits.com/\" rel=\"nofollow\">Tweetie</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Sat Nov 28 22:34:06 +0000 2009","id":6152844605,"text":"New Snacks!: #446 http://bit.ly/6A5ebl"},"following":false,"time_zone":"Pacific Time (US & Canada)","profile_sidebar_border_color":"2e93ff","geo_enabled":false,"verified":false,"profile_text_color":"262e5e","url":"http://snacksandshit.com","profile_background_image_url":"http://a1.twimg.com/profile_background_images/4749304/snacksicon.jpg","followers_count":2296,"profile_link_color":"9b1c2f","protected":false,"profile_background_tile":true,"created_at":"Mon Feb 23 23:27:07 +0000 2009","friends_count":300,"location":"Los Angeles, California","name":"Snacks And Shit","profile_background_color":"1A1B1F","profile_image_url":"http://a3.twimg.com/profile_images/378590567/JayZ_normal.jpg","id":21707052,"notifications":false,"utc_offset":-28800,"favourites_count":3},{"profile_sidebar_fill_color":"f0d860","description":"I used to find Lionel Richie very attractive. My 3yo son Chooch is smarter than me.","screen_name":"vagynafondue","notifications":false,"favourites_count":3,"status":{"in_reply_to_user_id":40951112,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://twitterrific.com\" rel=\"nofollow\">Twitterrific</a>","favorited":false,"in_reply_to_screen_name":"melissa_please","created_at":"Mon Nov 30 17:44:26 +0000 2009","id":6207836703,"text":"@Melissa_please yes plz send me some of THOSE! Or at least the recipe."},"following":false,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"f0d860","statuses_count":5548,"geo_enabled":false,"profile_text_color":"000000","url":"http://ohhonestlyerin.com","profile_background_image_url":"http://a1.twimg.com/profile_background_images/2667310/fr-fleur-d-lis-an.gif","verified":false,"profile_link_color":"0000ff","protected":false,"profile_background_tile":true,"created_at":"Sat Jul 14 13:32:01 +0000 2007","followers_count":298,"location":"\u00dcT: 40.394681,-80.029306","name":"Erin Honestly","profile_background_color":"000000","profile_image_url":"http://a3.twimg.com/profile_images/526874101/november09_normal.jpg","id":7470972,"utc_offset":-18000,"friends_count":141},{"profile_sidebar_fill_color":"e0ff92","description":"Cultural schizophrenic settled down, at last, in RVA. Specializing in awkwardness, which may be either hilarious or excruciating. Not for the faint of heart.","screen_name":"vmarinelli","followers_count":2298,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 17:48:26 +0000 2009","id":6207942203,"text":"\"This image is not simply an absurd juxtaposition of Jennifer Connelly & my toilet. It\u2019s also an invocation of happenstance.\" @ed_x is nuts."},"following":false,"statuses_count":8619,"time_zone":"Bogota","profile_sidebar_border_color":"87bc44","friends_count":203,"notifications":false,"favourites_count":34416,"profile_text_color":"000000","url":"http:///vmarinelli.tumblr.com","profile_background_image_url":"http://a3.twimg.com/profile_background_images/2566289/tunnel-background.jpg","geo_enabled":false,"profile_link_color":"0000ff","protected":false,"profile_background_tile":false,"created_at":"Thu Apr 26 06:48:04 +0000 2007","location":"Richmond, VA","name":"Victoria Marinelli","verified":false,"profile_background_color":"9ae4e8","profile_image_url":"http://a3.twimg.com/profile_images/76953857/220006156549_normal.jpg","id":5520382,"utc_offset":-18000},{"profile_sidebar_fill_color":"DDFFCC","followers_count":872391,"description":"I'm 29. I live with my 73-year-old dad. He is awesome. I just write down shit that he says","screen_name":"shitmydadsays","status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"web","favorited":false,"in_reply_to_screen_name":null,"created_at":"Fri Nov 27 21:31:06 +0000 2009","id":6123132850,"text":"\u201cThe whole world is fueled by bullshit\u2026 What? The kid asked me for advice on his science fair project so I\u2019m giving it to him.\u201d"},"following":false,"time_zone":"Pacific Time (US & Canada)","friends_count":1,"profile_sidebar_border_color":"BDDCAD","statuses_count":79,"notifications":false,"favourites_count":0,"profile_text_color":"333333","url":null,"geo_enabled":false,"profile_background_image_url":"http://s.twimg.com/a/1259091217/images/themes/theme16/bg.gif","profile_link_color":"0084B4","protected":false,"verified":false,"profile_background_tile":false,"created_at":"Mon Aug 03 18:20:34 +0000 2009","location":"","name":"Justin","profile_background_color":"9AE4E8","profile_image_url":"http://a3.twimg.com/profile_images/362705903/dad_normal.jpg","id":62581962,"utc_offset":-28800},{"profile_sidebar_fill_color":"252429","followers_count":1742,"description":"The best viral videos and pictures served daily!","screen_name":"DailyShite","status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://apiwiki.twitter.com/\" rel=\"nofollow\">API</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 18:01:32 +0000 2009","id":6208287595,"text":"Can’t Accuse This Guy of Too Many Decorations - http://scrw.us/2kt"},"following":false,"time_zone":"Central Time (US & Canada)","friends_count":1700,"profile_sidebar_border_color":"181A1E","geo_enabled":false,"notifications":false,"profile_text_color":"666666","url":"http://dailyshite.com","verified":false,"statuses_count":1131,"profile_background_image_url":"http://a1.twimg.com/profile_background_images/19243706/dailyshite-twitter.jpg","profile_link_color":"2FC2EF","protected":false,"profile_background_tile":true,"created_at":"Sun Mar 22 19:27:12 +0000 2009","location":"Mobile, AL / Cobh, Ireland","name":"Daily Shite","profile_background_color":"1A1B1F","profile_image_url":"http://a1.twimg.com/profile_images/107319570/avatar100_normal.jpg","id":25864339,"utc_offset":-21600,"favourites_count":0},{"profile_sidebar_fill_color":"e0ff92","description":"I'm an actor, director and producer. ","screen_name":"Danny_DeVito","notifications":false,"favourites_count":4,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://www.atebits.com/\" rel=\"nofollow\">Tweetie</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 17:05:06 +0000 2009","id":6206792187,"text":"Juxtible and the dirty dog brothers\nPodcast at WWW.\nWOBC 91.5 Oberlin College and community radio. Dig the World!"},"following":false,"time_zone":"Pacific Time (US & Canada)","profile_sidebar_border_color":"87bc44","statuses_count":465,"geo_enabled":false,"profile_text_color":"000000","url":"http://www.imdb.com/name/nm0000362/","profile_background_image_url":"http://s.twimg.com/a/1259091217/images/themes/theme1/bg.png","verified":true,"profile_link_color":"0000ff","protected":false,"profile_background_tile":false,"created_at":"Sat Sep 05 19:44:48 +0000 2009","followers_count":283379,"location":"Los Angeles","name":"Danny DeVito","profile_background_color":"9ae4e8","profile_image_url":"http://a3.twimg.com/profile_images/400232403/Photo_6_normal.jpg","id":71876190,"utc_offset":-28800,"friends_count":5},{"profile_sidebar_fill_color":"FFF7CC","description":"America's Finest News Source","screen_name":"TheOnion","friends_count":405051,"status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://twitterfeed.com\" rel=\"nofollow\">twitterfeed</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Mon Nov 30 18:05:33 +0000 2009","id":6208395405,"text":"In Focus: Armless, Legless Tiger Woods Wins U. S. Open http://bit.ly/899JgM"},"following":false,"time_zone":"Eastern Time (US & Canada)","profile_sidebar_border_color":"F2E195","notifications":false,"favourites_count":11,"statuses_count":3618,"profile_text_color":"0C3E53","url":"http://www.theonion.com","profile_background_image_url":"http://a1.twimg.com/profile_background_images/25775614/background4.png","geo_enabled":false,"profile_link_color":"FF0000","protected":false,"profile_background_tile":false,"created_at":"Tue Mar 04 02:48:37 +0000 2008","location":"New York, NY","name":"The Onion","verified":false,"profile_background_color":"006933","profile_image_url":"http://a1.twimg.com/profile_images/334357688/onion_logo_03_L_normal.png","id":14075928,"utc_offset":-18000,"followers_count":1969369},{"friends_count":0,"profile_sidebar_fill_color":"e0ff92","description":"2-time Emmy award winning comedian & star of Bravo's My Life on the D-List.","screen_name":"kathygriffin","status":{"in_reply_to_user_id":null,"in_reply_to_status_id":null,"truncated":false,"source":"<a href=\"http://echofon.com/\" rel=\"nofollow\">Echofon</a>","favorited":false,"in_reply_to_screen_name":null,"created_at":"Sun Nov 29 09:17:37 +0000 2009","id":6166085119,"text":"Thank you LA! On Chelsea Lately Monday night! Will twat about it. Maybe she will too. Twat to twat!"},"following":false,"time_zone":"Alaska","profile_sidebar_border_color":"87bc44","followers_count":215299,"profile_text_color":"000000","url":"http://www.kathygriffin.net","profile_background_image_url":"http://s.twimg.com/a/1259091217/images/themes/theme1/bg.png","profile_link_color":"0000ff","protected":false,"profile_background_tile":false,"favourites_count":2,"created_at":"Tue Feb 17 23:54:04 +0000 2009","location":"Los Angeles, CA","name":"Kathy Griffin","verified":true,"geo_enabled":false,"profile_background_color":"9ae4e8","profile_image_url":"http://a1.twimg.com/profile_images/507775388/51u2vJ-eEeL._SL500_AA280__normal.jpg","id":21148293,"notifications":false,"statuses_count":162,"utc_offset":-32400}], "next_cursor":1317534533279684274, "previous_cursor":0 }
|
data/test/helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'matchy'
|
5
|
+
require 'context'
|
6
|
+
require 'stump'
|
7
|
+
require 'fakeweb'
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
10
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
11
|
+
require 'twitter-lists'
|
12
|
+
|
13
|
+
FakeWeb.allow_net_connect = false
|
14
|
+
FakeWeb.register_uri(:get,
|
15
|
+
"http://user:pass@twitter.com/ivey/hah/members.json?cursor=-1",
|
16
|
+
:response => File.join(File.dirname(__FILE__), 'fixtures', 'ivey-hah-members.json'))
|
17
|
+
FakeWeb.register_uri(:get,
|
18
|
+
"http://user:pass@twitter.com/ivey/hah/members.json?cursor=1317534533279684274",
|
19
|
+
:response => File.join(File.dirname(__FILE__), 'fixtures', 'ivey-hah-members-p2.json'))
|
20
|
+
|
21
|
+
class Test::Unit::TestCase
|
22
|
+
end
|
data/test/test_list.rb
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestTwitterList < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "Have a class-level accessor for the Twitter::Base object" do
|
6
|
+
base = "Twitter::Base mock"
|
7
|
+
lambda { Twitter::List.twitter_base = base }.should_not raise_error
|
8
|
+
Twitter::List.twitter_base.should be(base)
|
9
|
+
end
|
10
|
+
|
11
|
+
context "Setting up Basic Auth" do
|
12
|
+
setup do
|
13
|
+
Twitter::List.setup_basic_auth "user", "pass"
|
14
|
+
end
|
15
|
+
|
16
|
+
should "be a Twitter::Base" do
|
17
|
+
Twitter::List.twitter_base.class.should be(Twitter::Base)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
context "A Twitter List" do
|
23
|
+
setup do
|
24
|
+
@list = Twitter::List.new
|
25
|
+
end
|
26
|
+
|
27
|
+
should "exist" do
|
28
|
+
@list.should_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
should "have a id" do
|
32
|
+
lambda { @list.id = 12223242 }.should_not raise_error
|
33
|
+
@list.id.should be(12223242)
|
34
|
+
end
|
35
|
+
|
36
|
+
should "have a name" do
|
37
|
+
lambda { @list.name = "Foo" }.should_not raise_error
|
38
|
+
@list.name.should be("Foo")
|
39
|
+
end
|
40
|
+
|
41
|
+
should "have a user" do
|
42
|
+
lambda { @list.user = "ivey" }.should_not raise_error
|
43
|
+
@list.user.should be("ivey")
|
44
|
+
end
|
45
|
+
|
46
|
+
should "have a description" do
|
47
|
+
lambda { @list.description = "Foo Bar Baz" }.should_not raise_error
|
48
|
+
@list.description.should be("Foo Bar Baz")
|
49
|
+
end
|
50
|
+
|
51
|
+
should "have members" do
|
52
|
+
lambda { @list.members = [[1,2],[3,4]] }.should_not raise_error
|
53
|
+
@list.members.should be([[1,2],[3,4]])
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
context "parsing a user/name string" do
|
59
|
+
setup do
|
60
|
+
@list = Twitter::List.parse "@ivey/hah"
|
61
|
+
end
|
62
|
+
|
63
|
+
should "have user = ivey" do
|
64
|
+
@list.user.should be("ivey")
|
65
|
+
end
|
66
|
+
|
67
|
+
should "have name = hah" do
|
68
|
+
@list.name.should be("hah")
|
69
|
+
end
|
70
|
+
|
71
|
+
context "loading from Twitter" do
|
72
|
+
setup do
|
73
|
+
Twitter::List.setup_basic_auth "user", "pass"
|
74
|
+
@list.load_members
|
75
|
+
end
|
76
|
+
|
77
|
+
should "have members" do
|
78
|
+
@list.members.size.should be(21)
|
79
|
+
end
|
80
|
+
|
81
|
+
should "have a userid for each member" do
|
82
|
+
@list.members.each { |x| x[0].class.should be(Fixnum)}
|
83
|
+
@list.member_ids.should be(@list.members.collect { |x| x[0] })
|
84
|
+
end
|
85
|
+
|
86
|
+
should "have a username for each member" do
|
87
|
+
@list.members.each { |x| x[1].class.should be(String)}
|
88
|
+
@list.member_names.should be(@list.members.collect { |x| x[1] })
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "Set math on 3 lists" do
|
94
|
+
setup do
|
95
|
+
@list1 = Twitter::List.new
|
96
|
+
@list1.members = [[1,"ivey"],[2,"emilyivey"],[3,"ellieivey"],[8,"billy_goat"]]
|
97
|
+
@list2 = Twitter::List.new
|
98
|
+
@list2.members = [[1,"ivey"],[4,"tensigma"],[5,"smahend"],[8,"billy_goat"]]
|
99
|
+
@list3 = Twitter::List.new
|
100
|
+
@list3.members = [[1,"ivey"],[3,"ellieivey"],[6,"jteeter"],[7,"jackowayed"],[8,"billy_goat"]]
|
101
|
+
end
|
102
|
+
|
103
|
+
context "find union of the 3 lists" do
|
104
|
+
setup do
|
105
|
+
@union = Twitter::List.union(@list1,@list2,@list3)
|
106
|
+
end
|
107
|
+
|
108
|
+
should "have 8 elements" do
|
109
|
+
@union.size.should be(8)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context "find intersection of the 3 lists" do
|
114
|
+
setup do
|
115
|
+
@union = Twitter::List.intersection(@list1,@list2,@list3)
|
116
|
+
end
|
117
|
+
|
118
|
+
should "have 3 elements" do
|
119
|
+
@union.size.should be(2)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: twitter-lists
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael D. Ivey
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-30 00:00:00 -06:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: thoughtbot-shoulda
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: jnunemaker-matchy
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: jeremymcanally-context
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: jeremymcanally-stump
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: fakeweb
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
description: A library and command-line tool for working with Twitter lists
|
66
|
+
email: ivey@gweezlebur.com
|
67
|
+
executables: []
|
68
|
+
|
69
|
+
extensions: []
|
70
|
+
|
71
|
+
extra_rdoc_files:
|
72
|
+
- LICENSE
|
73
|
+
- README.rdoc
|
74
|
+
files:
|
75
|
+
- .document
|
76
|
+
- .gitignore
|
77
|
+
- LICENSE
|
78
|
+
- README.rdoc
|
79
|
+
- Rakefile
|
80
|
+
- VERSION
|
81
|
+
- lib/twitter-lists.rb
|
82
|
+
- lib/twitter-lists/list.rb
|
83
|
+
- test/fixtures/ivey-hah-members-p2.json
|
84
|
+
- test/fixtures/ivey-hah-members.json
|
85
|
+
- test/helper.rb
|
86
|
+
- test/test_list.rb
|
87
|
+
has_rdoc: true
|
88
|
+
homepage: http://github.com/ivey/twitter-lists
|
89
|
+
licenses: []
|
90
|
+
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options:
|
93
|
+
- --charset=UTF-8
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
version:
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: "0"
|
107
|
+
version:
|
108
|
+
requirements: []
|
109
|
+
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 1.3.5
|
112
|
+
signing_key:
|
113
|
+
specification_version: 3
|
114
|
+
summary: A library and command-line tool for working with Twitter lists.
|
115
|
+
test_files:
|
116
|
+
- test/helper.rb
|
117
|
+
- test/test_list.rb
|