oii_twitter_goodies 0.0.8 → 0.0.71

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff7c76ac31bcf7f46a4776f0e5d60df17e544056
4
- data.tar.gz: a07e57b3b8d5d4d0c1e7fb5783b949519eb1e5f6
3
+ metadata.gz: 933b9ecf7096b8917d364cc66fea8131a9b9a85e
4
+ data.tar.gz: 48ef2ecfb3f83a385c6c911006964071c7091aa4
5
5
  SHA512:
6
- metadata.gz: a115f0566025572ac5f1b36258c7d0d9f6858662cab58b90409f921022a51fa1496d16c833e958799411ced02613fb8d306d085667a50379a2ef0f70f68249d0
7
- data.tar.gz: 6962758ff69a74a06d4e6a33cbf5b0e7db49bd1642845c511533fb4a1d0d45e0b14916283d06d769f5b9d0744f06a81381dc3d7ba59c1ec7a717d86170c37ed6
6
+ metadata.gz: 9ca3177352e308e5044513c4d1fc4cb98ea07ffec1c627ea3c99379ea52f81790e1192a352f6be43abc0f42fa20b716d94d6ca65ef30171097b62a2b772eca77
7
+ data.tar.gz: d03ac6c4211d8507aa8545e5837982beb3bbeba969a0f6389ad8a7c1ef1c7123a7d45cfcf375358e4f0ce32f44fb68a638f38d2bb32a5c21c16dabff041e7096
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in oii_twitter_goodies.gemspec
4
+ gem 'bundler'
5
+ gem 'mongo_mapper'
6
+ gem 'oauth'
7
+ gem 'twitter'
8
+ gem 'tweetstream'
9
+ gem 'hashie'
10
+ gem 'typhoeus'
11
+ gem 'json'
12
+ gemspec
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Devin Gaffney
1
+ Copyright (c) 2013 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
- # 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
+ 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,46 +1,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
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
+ end
17
+ end
@@ -32,19 +32,7 @@ class FollowersForUsers
32
32
  puts "Done!"
33
33
  return results
34
34
  end
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
-
35
+
48
36
  def follower_ids_for(screen_name)
49
37
  return direction_ids_for screen_name, "follower"
50
38
  end
@@ -58,68 +46,19 @@ class FollowersForUsers
58
46
  ids = []
59
47
  while cursor != 0
60
48
  puts cursor
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
49
+ data = Hashie::Mash[@client.send(direction+"_ids", screen_name, :cursor => cursor).attrs]
50
+ ids = ids|data.ids
85
51
  cursor = data["next_cursor"]
86
52
  end
87
- return ids.flatten.uniq
53
+ return ids
88
54
  end
89
55
 
90
56
  def user_data_for(screen_names)
91
57
  screen_names = [screen_names].flatten
92
58
  user_data = []
93
- size = screen_names.length/100
94
59
  screen_names.each_slice(100) do |screen_name_set|
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
60
+ user_data = [user_data|@client.users(screen_name_set)].flatten
123
61
  end
62
+ user_data
124
63
  end
125
64
  end
@@ -23,7 +23,6 @@ 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
27
26
  place = Hashie::Mash[place]
28
27
  obj = self.new
29
28
  obj.twitter_id = place["twitter_id"]
@@ -33,7 +32,6 @@ class Place
33
32
  obj.full_name = place["full_name"]
34
33
  obj.country_code = place["country_code"]
35
34
  obj.country = place["country"]
36
- place["bounding_box"] = place["bounding_box"].attrs if Twitter::Place
37
35
  bounding_box = BoundingBox.new_from_raw(place["bounding_box"], obj._id)
38
36
  if bounding_box
39
37
  obj.bounding_box = bounding_box
@@ -48,7 +48,6 @@ class Tweet
48
48
 
49
49
  def self.new_from_raw(tweet, user_id)
50
50
  return if tweet.nil?
51
- tweet = tweet.attrs if tweet.class == Twitter::Tweet
52
51
  tweet = Hashie::Mash[tweet]
53
52
  obj = self.new
54
53
  obj.created_at = tweet["created_at"]
@@ -93,15 +92,15 @@ class Tweet
93
92
  end
94
93
  end
95
94
  end
96
- place = Place.new_from_raw(tweet["place"], obj._id)
95
+ place = Place.new_from_raw(tweet["place"].attrs, obj._id)
97
96
  if place
98
97
  obj.place = place
99
98
  end
100
- geo = Geo.new_from_raw(tweet["geo"], obj._id)
99
+ geo = Geo.new_from_raw(tweet["geo"].attrs, obj._id)
101
100
  if geo
102
101
  obj.geo = geo
103
102
  end
104
- coordinate = Coordinate.new_from_raw(tweet["coordinate"], obj._id)
103
+ coordinate = Coordinate.new_from_raw(tweet["coordinate"].attrs, obj._id)
105
104
  if coordinate
106
105
  obj.coordinate = coordinate
107
106
  end
@@ -47,7 +47,6 @@ class User
47
47
  end
48
48
 
49
49
  def self.new_from_raw(status)
50
- status = status.attrs if status.class == Twitter::User
51
50
  status = Hashie::Mash[status]
52
51
  obj = self.new
53
52
  obj.twitter_id = status["user"].nil? ? status["id"] : status["user"]["id"]
@@ -1,3 +1,3 @@
1
1
  module OIITwitterGoodies
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.71"
3
3
  end
@@ -7,8 +7,8 @@ require 'hashie'
7
7
  require 'typhoeus'
8
8
  require 'json'
9
9
 
10
- require File.dirname(__FILE__)+'/oii_twitter_goodies/version.rb'
10
+ require "oii_twitter_goodies/version"
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 }
@@ -22,6 +22,17 @@ 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"
25
36
  gem.files = `git ls-files`.split($/)
26
37
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
27
38
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
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.8
4
+ version: 0.0.71
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-04-06 00:00:00.000000000 Z
11
+ date: 2013-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,160 @@ 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'
167
321
  description: OII Twitter Goodies!
168
322
  email:
169
323
  - itsme@devingaffney.com
@@ -171,6 +325,9 @@ executables: []
171
325
  extensions: []
172
326
  extra_rdoc_files: []
173
327
  files:
328
+ - .DS_Store
329
+ - .gitignore
330
+ - Gemfile
174
331
  - LICENSE.txt
175
332
  - README.md
176
333
  - Rakefile
@@ -201,7 +358,6 @@ files:
201
358
  - lib/oii_twitter_goodies/model/user_mention.rb
202
359
  - lib/oii_twitter_goodies/version.rb
203
360
  - oii_twitter_goodies.gemspec
204
- - pkg/oii_twitter_goodies-0.0.1.gem
205
361
  homepage: http://github.com/DGaffney/oii_twitter_goodies
206
362
  licenses: []
207
363
  metadata: {}
Binary file