twitter-lists 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|