oii_twitter_goodies 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +2 -2
- data/lib/oii_twitter_goodies/extensions/twitter_api_utils.rb +30 -30
- data/lib/oii_twitter_goodies/extensions/twitter_client.rb +46 -17
- data/lib/oii_twitter_goodies/lib/followers_for_users.rb +67 -6
- data/lib/oii_twitter_goodies/model/place.rb +2 -0
- data/lib/oii_twitter_goodies/model/tweet.rb +1 -0
- data/lib/oii_twitter_goodies/model/user.rb +1 -0
- data/lib/oii_twitter_goodies/version.rb +1 -1
- data/lib/oii_twitter_goodies.rb +4 -4
- data/oii_twitter_goodies.gemspec +0 -11
- data/pkg/oii_twitter_goodies-0.0.1.gem +0 -0
- metadata +3 -159
- data/.DS_Store +0 -0
- data/.gitignore +0 -17
- data/Gemfile +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff7c76ac31bcf7f46a4776f0e5d60df17e544056
|
4
|
+
data.tar.gz: a07e57b3b8d5d4d0c1e7fb5783b949519eb1e5f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a115f0566025572ac5f1b36258c7d0d9f6858662cab58b90409f921022a51fa1496d16c833e958799411ced02613fb8d306d085667a50379a2ef0f70f68249d0
|
7
|
+
data.tar.gz: 6962758ff69a74a06d4e6a33cbf5b0e7db49bd1642845c511533fb4a1d0d45e0b14916283d06d769f5b9d0744f06a81381dc3d7ba59c1ec7a717d86170c37ed6
|
data/LICENSE.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) 2012 Devin Gaffney
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,30 +1,30 @@
|
|
1
|
-
module Twitter
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
1
|
+
# module Twitter
|
2
|
+
# module API
|
3
|
+
# module Utils
|
4
|
+
# def objects_from_response(klass, request_method, path, options={})
|
5
|
+
# response = send(request_method.to_sym, path, options)
|
6
|
+
# if response.class == Hash && response[:body]
|
7
|
+
# response = response[:body]
|
8
|
+
# objects_from_array(klass, response)
|
9
|
+
# else
|
10
|
+
# return response
|
11
|
+
# end
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# def object_from_response(klass, request_method, path, options={})
|
15
|
+
# response = send(request_method.to_sym, path, options)
|
16
|
+
# return klass.from_response(response) || response
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# def cursor_from_response(collection_name, klass, request_method, path, options, method_name)
|
20
|
+
# merge_default_cursor!(options)
|
21
|
+
# response = send(request_method.to_sym, path, options)
|
22
|
+
# if (response.class == Hash || response.class == BSON::OrderedHash) && !response.keys.include?(:body)
|
23
|
+
# Twitter::Cursor.from_response({:body => response}, collection_name.to_sym, klass, self, method_name, options)
|
24
|
+
# else
|
25
|
+
# Twitter::Cursor.from_response(response, collection_name.to_sym, klass, self, method_name, options)
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
# end
|
@@ -1,17 +1,46 @@
|
|
1
|
-
module Twitter
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
# module Twitter
|
2
|
+
# class Client
|
3
|
+
# def get(path, params={})
|
4
|
+
# lookup = TwitterAPICall.first(:url => path.to_s, :params => params)
|
5
|
+
# if lookup
|
6
|
+
# return lookup.data
|
7
|
+
# else
|
8
|
+
# response = request(:get, path, params)
|
9
|
+
# if response[:status] && response[:status] == 200
|
10
|
+
# lookup = TwitterAPICall.new(:url => path.to_s, :params => params, :data => response[:body])
|
11
|
+
# lookup.save!
|
12
|
+
# end
|
13
|
+
# return response
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# def post(path, params={})
|
18
|
+
# lookup = TwitterAPICall.first(:url => path.to_s, :params => params)
|
19
|
+
# if lookup
|
20
|
+
# return lookup.data
|
21
|
+
# else
|
22
|
+
# signature_params = params.values.any?{|value| value.respond_to?(:to_io)} ? {} : params
|
23
|
+
# response = request(:post, path, params, signature_params)
|
24
|
+
# if response[:status] && response[:status] == 200
|
25
|
+
# lookup = TwitterAPICall.new(:url => path.to_s, :params => params, :data => response[:body])
|
26
|
+
# lookup.save!
|
27
|
+
# end
|
28
|
+
# return response
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# def put(path, params={})
|
33
|
+
# lookup = TwitterAPICall.first(:url => path.to_s, :params => params)
|
34
|
+
# if lookup
|
35
|
+
# return lookup.data
|
36
|
+
# else
|
37
|
+
# response = request(:put, path, params)
|
38
|
+
# if response[:status] && response[:status] == 200
|
39
|
+
# lookup = TwitterAPICall.new(:url => path.to_s, :params => params, :data => response[:body])
|
40
|
+
# lookup.save!
|
41
|
+
# end
|
42
|
+
# return response
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
# end
|
46
|
+
# end
|
@@ -32,7 +32,19 @@ class FollowersForUsers
|
|
32
32
|
puts "Done!"
|
33
33
|
return results
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
|
+
def grab_followers_iterative(&block)
|
37
|
+
@screen_names.each do |screen_name|
|
38
|
+
puts "Current progress: #{@screen_names.index(screen_name)}/#{@screen_names.length} started"
|
39
|
+
user = user_data_for(screen_name).first
|
40
|
+
follower_ids = follower_ids_for(screen_name)
|
41
|
+
follower_ids.each_slice(100) do |follower_id_slice|
|
42
|
+
block.call([user, user_data_for_set(follower_id_slice)])
|
43
|
+
end
|
44
|
+
puts "Current progress: ##{@screen_names.index(screen_name)}/#{@screen_names.length} complete"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
36
48
|
def follower_ids_for(screen_name)
|
37
49
|
return direction_ids_for screen_name, "follower"
|
38
50
|
end
|
@@ -46,19 +58,68 @@ class FollowersForUsers
|
|
46
58
|
ids = []
|
47
59
|
while cursor != 0
|
48
60
|
puts cursor
|
49
|
-
|
50
|
-
|
61
|
+
begin
|
62
|
+
data = Hashie::Mash[@client.send(direction+"_ids", screen_name, :cursor => cursor).attrs]
|
63
|
+
rescue Twitter::Error::BadGateway
|
64
|
+
puts "Got Twitter::Error::BadGateway error - usually this is just a missed connect from Twitter."
|
65
|
+
sleep(10)
|
66
|
+
retry
|
67
|
+
rescue Twitter::Error::TooManyRequests
|
68
|
+
puts "Got Twitter::Error::TooManyRequests error - we are rate limited and will sleep for 15 minutes. See you in a bit."
|
69
|
+
sleep(15*60)
|
70
|
+
retry
|
71
|
+
rescue Twitter::Error::ClientError
|
72
|
+
puts "Got Twitter::Error::ClientError error - something weird happened and we're going to retry."
|
73
|
+
sleep(5)
|
74
|
+
retry
|
75
|
+
rescue Twitter::Error::InternalServerError
|
76
|
+
puts "Got Twitter::Error::InternalServerError error - something weird happened and we're going to retry."
|
77
|
+
sleep(5)
|
78
|
+
retry
|
79
|
+
rescue Twitter::Error::ServiceUnavailable
|
80
|
+
puts "Got Twitter::Error::ServiceUnavailable error - Fail whaled. We'll hit those guys again in 10"
|
81
|
+
sleep(10)
|
82
|
+
retry
|
83
|
+
end
|
84
|
+
ids << data.ids
|
51
85
|
cursor = data["next_cursor"]
|
52
86
|
end
|
53
|
-
return ids
|
87
|
+
return ids.flatten.uniq
|
54
88
|
end
|
55
89
|
|
56
90
|
def user_data_for(screen_names)
|
57
91
|
screen_names = [screen_names].flatten
|
58
92
|
user_data = []
|
93
|
+
size = screen_names.length/100
|
59
94
|
screen_names.each_slice(100) do |screen_name_set|
|
60
|
-
user_data
|
95
|
+
user_data << user_data_for_set(screen_name_set)
|
96
|
+
end
|
97
|
+
user_data.flatten
|
98
|
+
end
|
99
|
+
|
100
|
+
def user_data_for_set(screen_name_set)
|
101
|
+
begin
|
102
|
+
return @client.users(screen_name_set)
|
103
|
+
rescue Twitter::Error::BadGateway
|
104
|
+
puts "Got Twitter::Error::BadGateway error - usually this is just a missed connect from Twitter."
|
105
|
+
sleep(10)
|
106
|
+
retry
|
107
|
+
rescue Twitter::Error::TooManyRequests
|
108
|
+
puts "Got Twitter::Error::TooManyRequests error - we are rate limited and will sleep for 15 minutes. See you in a bit."
|
109
|
+
sleep(15*60)
|
110
|
+
retry
|
111
|
+
rescue Twitter::Error::ClientError
|
112
|
+
puts "Got Twitter::Error::ClientError error - something weird happened and we're going to retry."
|
113
|
+
sleep(5)
|
114
|
+
retry
|
115
|
+
rescue Twitter::Error::InternalServerError
|
116
|
+
puts "Got Twitter::Error::InternalServerError error - something weird happened and we're going to retry."
|
117
|
+
sleep(5)
|
118
|
+
retry
|
119
|
+
rescue Twitter::Error::ServiceUnavailable
|
120
|
+
puts "Got Twitter::Error::ServiceUnavailable error - Fail whaled. We'll hit those guys again in 10"
|
121
|
+
sleep(10)
|
122
|
+
retry
|
61
123
|
end
|
62
|
-
user_data
|
63
124
|
end
|
64
125
|
end
|
@@ -23,6 +23,7 @@ class Place
|
|
23
23
|
|
24
24
|
def self.new_from_raw(place, tweet_id)
|
25
25
|
return if place.nil?
|
26
|
+
place = place.attrs if place.class == Twitter::Place
|
26
27
|
place = Hashie::Mash[place]
|
27
28
|
obj = self.new
|
28
29
|
obj.twitter_id = place["twitter_id"]
|
@@ -32,6 +33,7 @@ class Place
|
|
32
33
|
obj.full_name = place["full_name"]
|
33
34
|
obj.country_code = place["country_code"]
|
34
35
|
obj.country = place["country"]
|
36
|
+
place["bounding_box"] = place["bounding_box"].attrs if Twitter::Place
|
35
37
|
bounding_box = BoundingBox.new_from_raw(place["bounding_box"], obj._id)
|
36
38
|
if bounding_box
|
37
39
|
obj.bounding_box = bounding_box
|
data/lib/oii_twitter_goodies.rb
CHANGED
@@ -7,8 +7,8 @@ require 'hashie'
|
|
7
7
|
require 'typhoeus'
|
8
8
|
require 'json'
|
9
9
|
|
10
|
-
require
|
10
|
+
require File.dirname(__FILE__)+'/oii_twitter_goodies/version.rb'
|
11
11
|
|
12
|
-
Dir[File.dirname(__FILE__)+'/oii_twitter_goodies/extensions/*.rb'].each {|file| require file }
|
13
|
-
Dir[File.dirname(__FILE__)+'/oii_twitter_goodies/lib/*.rb'].each {|file| require file }
|
14
|
-
Dir[File.dirname(__FILE__)+'/oii_twitter_goodies/model/*.rb'].each {|file| require file }
|
12
|
+
Dir[File.dirname(__FILE__) + '/oii_twitter_goodies/extensions/*.rb'].each {|file| require file }
|
13
|
+
Dir[File.dirname(__FILE__) + '/oii_twitter_goodies/lib/*.rb'].each {|file| require file }
|
14
|
+
Dir[File.dirname(__FILE__) + '/oii_twitter_goodies/model/*.rb'].each {|file| require file }
|
data/oii_twitter_goodies.gemspec
CHANGED
@@ -22,17 +22,6 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_development_dependency "hashie"
|
23
23
|
gem.add_development_dependency "typhoeus"
|
24
24
|
gem.add_development_dependency "json"
|
25
|
-
gem.add_dependency "bundler", ">= 1.0.0"
|
26
|
-
gem.add_dependency "mongo_mapper"
|
27
|
-
gem.add_dependency "bcrypt-ruby"
|
28
|
-
gem.add_dependency "bson_ext"
|
29
|
-
gem.add_dependency "oauth"
|
30
|
-
gem.add_dependency "twitter"
|
31
|
-
gem.add_dependency "tweetstream"
|
32
|
-
gem.add_dependency "minitest"
|
33
|
-
gem.add_dependency "hashie"
|
34
|
-
gem.add_dependency "typhoeus"
|
35
|
-
gem.add_dependency "json"
|
36
25
|
gem.files = `git ls-files`.split($/)
|
37
26
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
38
27
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oii_twitter_goodies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Devin Gaffney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -164,160 +164,6 @@ dependencies:
|
|
164
164
|
- - ! '>='
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: bundler
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 1.0.0
|
174
|
-
type: :runtime
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ! '>='
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 1.0.0
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: mongo_mapper
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ! '>='
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :runtime
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ! '>='
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: bcrypt-ruby
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - ! '>='
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '0'
|
202
|
-
type: :runtime
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - ! '>='
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: bson_ext
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - ! '>='
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
-
type: :runtime
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - ! '>='
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
223
|
-
- !ruby/object:Gem::Dependency
|
224
|
-
name: oauth
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- - ! '>='
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0'
|
230
|
-
type: :runtime
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
requirements:
|
234
|
-
- - ! '>='
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: '0'
|
237
|
-
- !ruby/object:Gem::Dependency
|
238
|
-
name: twitter
|
239
|
-
requirement: !ruby/object:Gem::Requirement
|
240
|
-
requirements:
|
241
|
-
- - ! '>='
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
version: '0'
|
244
|
-
type: :runtime
|
245
|
-
prerelease: false
|
246
|
-
version_requirements: !ruby/object:Gem::Requirement
|
247
|
-
requirements:
|
248
|
-
- - ! '>='
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
version: '0'
|
251
|
-
- !ruby/object:Gem::Dependency
|
252
|
-
name: tweetstream
|
253
|
-
requirement: !ruby/object:Gem::Requirement
|
254
|
-
requirements:
|
255
|
-
- - ! '>='
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
version: '0'
|
258
|
-
type: :runtime
|
259
|
-
prerelease: false
|
260
|
-
version_requirements: !ruby/object:Gem::Requirement
|
261
|
-
requirements:
|
262
|
-
- - ! '>='
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
version: '0'
|
265
|
-
- !ruby/object:Gem::Dependency
|
266
|
-
name: minitest
|
267
|
-
requirement: !ruby/object:Gem::Requirement
|
268
|
-
requirements:
|
269
|
-
- - ! '>='
|
270
|
-
- !ruby/object:Gem::Version
|
271
|
-
version: '0'
|
272
|
-
type: :runtime
|
273
|
-
prerelease: false
|
274
|
-
version_requirements: !ruby/object:Gem::Requirement
|
275
|
-
requirements:
|
276
|
-
- - ! '>='
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
version: '0'
|
279
|
-
- !ruby/object:Gem::Dependency
|
280
|
-
name: hashie
|
281
|
-
requirement: !ruby/object:Gem::Requirement
|
282
|
-
requirements:
|
283
|
-
- - ! '>='
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: '0'
|
286
|
-
type: :runtime
|
287
|
-
prerelease: false
|
288
|
-
version_requirements: !ruby/object:Gem::Requirement
|
289
|
-
requirements:
|
290
|
-
- - ! '>='
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
version: '0'
|
293
|
-
- !ruby/object:Gem::Dependency
|
294
|
-
name: typhoeus
|
295
|
-
requirement: !ruby/object:Gem::Requirement
|
296
|
-
requirements:
|
297
|
-
- - ! '>='
|
298
|
-
- !ruby/object:Gem::Version
|
299
|
-
version: '0'
|
300
|
-
type: :runtime
|
301
|
-
prerelease: false
|
302
|
-
version_requirements: !ruby/object:Gem::Requirement
|
303
|
-
requirements:
|
304
|
-
- - ! '>='
|
305
|
-
- !ruby/object:Gem::Version
|
306
|
-
version: '0'
|
307
|
-
- !ruby/object:Gem::Dependency
|
308
|
-
name: json
|
309
|
-
requirement: !ruby/object:Gem::Requirement
|
310
|
-
requirements:
|
311
|
-
- - ! '>='
|
312
|
-
- !ruby/object:Gem::Version
|
313
|
-
version: '0'
|
314
|
-
type: :runtime
|
315
|
-
prerelease: false
|
316
|
-
version_requirements: !ruby/object:Gem::Requirement
|
317
|
-
requirements:
|
318
|
-
- - ! '>='
|
319
|
-
- !ruby/object:Gem::Version
|
320
|
-
version: '0'
|
321
167
|
description: OII Twitter Goodies!
|
322
168
|
email:
|
323
169
|
- itsme@devingaffney.com
|
@@ -325,9 +171,6 @@ executables: []
|
|
325
171
|
extensions: []
|
326
172
|
extra_rdoc_files: []
|
327
173
|
files:
|
328
|
-
- .DS_Store
|
329
|
-
- .gitignore
|
330
|
-
- Gemfile
|
331
174
|
- LICENSE.txt
|
332
175
|
- README.md
|
333
176
|
- Rakefile
|
@@ -358,6 +201,7 @@ files:
|
|
358
201
|
- lib/oii_twitter_goodies/model/user_mention.rb
|
359
202
|
- lib/oii_twitter_goodies/version.rb
|
360
203
|
- oii_twitter_goodies.gemspec
|
204
|
+
- pkg/oii_twitter_goodies-0.0.1.gem
|
361
205
|
homepage: http://github.com/DGaffney/oii_twitter_goodies
|
362
206
|
licenses: []
|
363
207
|
metadata: {}
|
data/.DS_Store
DELETED
Binary file
|
data/.gitignore
DELETED
data/Gemfile
DELETED