twitter_with_auto_pagination 0.4.0 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a766fdb1cdee5bb05a9a5a075d2249637284338
4
- data.tar.gz: a493b330a56148deb5abf3408b3252c492d56be9
3
+ metadata.gz: c3b148014f092aee0b2daa1893c109dbb8ae1b00
4
+ data.tar.gz: 5e1f994fa4185d4d6db93e81aef1c014aa1ae21a
5
5
  SHA512:
6
- metadata.gz: 8238fe4d1f500572e1993891ecd861f1cb6f90526732bf37defe460fd5e130b1605fded19fd951dc68901c62eead6d69325b71790b9cb552393203ceb402e355
7
- data.tar.gz: 9fd76e42c73f82b200ce110eb9efeba3097150e29fd6bbb273d84da4a0d267698bb7d2bba2e6e6b65f5a78880b65b523febde6841a9d51a29a45bbd8dee76573
6
+ metadata.gz: c5852ccf3eed3bf1848abff90fecc408d157fce3d896b7e938b2a98f5289e4407fa79cc0372d15cad9989cc088864786d4d6dd8b2c3cc1d523eff0928a338d79
7
+ data.tar.gz: bb4230a5ae87e4cc12450febefa4c76d207f99def578cd49a164536f55e76512b73f4f6ec34a900270025d5201d453cada3b35b1f923956f2fe43a8b73abedc9
data/README.md CHANGED
@@ -1,52 +1,151 @@
1
- ex-twitter
2
- ==========
1
+ twitter-with-auto-pagination
2
+ ============================
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/ex_twitter.png)](https://badge.fury.io/rb/ex_twitter)
5
- [![Build Status](https://travis-ci.org/ts-3156/ex-twitter.svg?branch=master)](https://travis-ci.org/ts-3156/ex-twitter)
4
+ [![Gem Version](https://badge.fury.io/rb/ex_twitter.png)](https://badge.fury.io/rb/twitter_with_auto_pagination)
5
+ [![Build Status](https://travis-ci.org/ts-3156/ex-twitter.svg?branch=master)](https://travis-ci.org/ts-3156/twitter-with-auto-pagination)
6
6
 
7
- Add auto paginate feature to Twitter gem.
7
+ Add auto pagination, auto caching and parallelly fetching features to Twitter gem.
8
8
 
9
9
  ## Installation
10
10
 
11
11
  ### Gem
12
12
 
13
13
  ```
14
- gem install ex_twitter
14
+ gem install twitter_with_auto_pagination
15
15
  ```
16
16
 
17
17
  ### Rails
18
18
 
19
- Add ex_twitter to your Gemfile, and bundle.
19
+ Add `twitter_with_auto_pagination` to your Gemfile, and bundle.
20
20
 
21
21
  ## Features
22
22
 
23
- * Auto paginate feature
23
+ * Auto pagination
24
+ * Auto caching
25
+ * Parallelly fetching
24
26
 
25
27
  ## Configuration
26
28
 
27
- You can pass configuration options as a block to `ExTwitter.new` just like `Twitter::REST::Client.new`.
29
+ You can pass configuration options as a block to `TwitterWithAutoPagination::Client.new` just like `Twitter::REST::Client.new`.
28
30
 
29
31
  ```
30
- client = ExTwitter.new do |config|
32
+ client = TwitterWithAutoPagination::Client.new do |config|
31
33
  config.consumer_key = "YOUR_CONSUMER_KEY"
32
34
  config.consumer_secret = "YOUR_CONSUMER_SECRET"
33
35
  config.access_token = "YOUR_ACCESS_TOKEN"
34
36
  config.access_token_secret = "YOUR_ACCESS_SECRET"
37
+ config.log_level = :debug # optional
38
+ config.logger = Logger.new(STDOUT) # optional
35
39
  end
36
40
  ```
37
41
 
38
- You can pass advanced configuration options as a block to `ExTwitter.new`.
42
+ ## Usage Examples
43
+
44
+ After configuring a `client`, you can do the following things.
45
+
46
+ ### Pre-existing and enhanced APIs
47
+
48
+ Fetch the timeline of Tweets (by screen name or user ID, or by implicit authenticated user)
39
49
 
40
50
  ```
41
- client = ExTwitter.new do |config|
42
- config.auto_paginate = true
43
- config.max_retries = 1
44
- config.max_paginates = 3
45
- end
51
+ client.user_timeline('gem')
52
+ client.user_timeline(213747670)
53
+ client.user_timeline
54
+
55
+ result.size
56
+ # => 588
57
+
58
+ result.first.text
59
+ # => "Your tweet text..."
60
+
61
+ result.first.user.screen_name
62
+ # => "your_screen_name"
46
63
  ```
47
64
 
48
- ## Usage Examples
65
+ Fetch the timeline of Tweets from the authenticated user's home page
49
66
 
50
67
  ```
51
- client.user_timeline
68
+ client.home_timeline
69
+ ```
70
+
71
+ Fetch the timeline of Tweets mentioning the authenticated user
72
+
73
+ ```
74
+ client.mentions_timeline
75
+ ```
76
+
77
+ Fetch all friends's user IDs (by screen name or user ID, or by implicit authenticated user)
78
+
79
+ ```
80
+ client.friend_ids('gem')
81
+ client.friend_ids(213747670)
82
+ client.friend_ids
83
+ ```
84
+
85
+ Fetch all followers's user IDs (by screen name or user ID, or by implicit authenticated user)
86
+
87
+ ```
88
+ client.follower_ids('gem')
89
+ client.follower_ids(213747670)
90
+ client.follower_ids
91
+ ```
92
+
93
+ Fetch all friends with profile details (by screen name or user ID, or by implicit authenticated user)
94
+
95
+ ```
96
+ client.friends('gem')
97
+ client.friends(213747670)
98
+ client.friends
99
+ ```
100
+
101
+ Fetch all followers with profile details (by screen name or user ID, or by implicit authenticated user)
102
+
103
+ ```
104
+ client.followers('gem')
105
+ client.followers(213747670)
106
+ client.followers
107
+ ```
108
+
109
+ Other APIs(e.g. `favorites`, `search`) also have auto pagination feature.
110
+
111
+ ### New APIs
112
+
113
+ ```
114
+ client.mutual_friends
115
+ ```
116
+
117
+ ```
118
+ client.one_sided_friends
119
+ ```
120
+
121
+ ```
122
+ client.one_sided_followers
123
+ ```
124
+
125
+ ```
126
+ client.common_friends(me, you)
127
+ ```
128
+
129
+ ```
130
+ client.common_followers(me, you)
131
+ ```
132
+
133
+ ```
134
+ client.close_friends
135
+ ```
136
+
137
+ ```
138
+ client.removed(pre_me, cur_me)
139
+ ```
140
+
141
+ ```
142
+ client.removed_by(pre_me, cur_me)
143
+ ```
144
+
145
+ ```
146
+ client.replied
147
+ ```
148
+
149
+ ```
150
+ client.replied_by
52
151
  ```
@@ -20,13 +20,15 @@ module TwitterWithAutoPagination
20
20
  @uid = options.has_key?(:uid) ? options.delete(:uid).to_i : nil
21
21
  @screen_name = options.has_key?(:screen_name) ? options.delete(:screen_name).to_s : nil
22
22
 
23
- @@logger = @logger =
24
- if options[:logger]
23
+ logger =
24
+ if options.has_key?(:logger)
25
25
  options.delete(:logger)
26
26
  else
27
27
  Dir.mkdir('log') unless File.exists?('log')
28
28
  Logger.new('log/twitter_with_auto_pagination.log')
29
29
  end
30
+ logger.level = options.has_key?(:log_level) ? options.delete(:log_level) : :debug
31
+ @@logger = @logger = logger
30
32
 
31
33
  super
32
34
  end
@@ -37,8 +37,10 @@ module TwitterWithAutoPagination
37
37
  {method: :user_timeline, args: args}])
38
38
  end
39
39
 
40
- def one_sided_following(me)
41
- if uid_or_screen_name?(me)
40
+ def one_sided_friends(me = nil)
41
+ if me.nil?
42
+ friends_parallelly.to_a - followers_parallelly.to_a
43
+ elsif uid_or_screen_name?(me)
42
44
  # TODO use friends_and_followers
43
45
  friends_parallelly(me).to_a - followers_parallelly(me).to_a
44
46
  elsif me.respond_to?(:friends) && me.respond_to?(:followers)
@@ -48,8 +50,10 @@ module TwitterWithAutoPagination
48
50
  end
49
51
  end
50
52
 
51
- def one_sided_followers(me)
52
- if uid_or_screen_name?(me)
53
+ def one_sided_followers(me = nil)
54
+ if me.nil?
55
+ followers_parallelly.to_a - friends_parallelly.to_a
56
+ elsif uid_or_screen_name?(me)
53
57
  # TODO use friends_and_followers
54
58
  followers_parallelly(me).to_a - friends_parallelly(me).to_a
55
59
  elsif me.respond_to?(:friends) && me.respond_to?(:followers)
@@ -59,8 +63,10 @@ module TwitterWithAutoPagination
59
63
  end
60
64
  end
61
65
 
62
- def mutual_friends(me)
63
- if uid_or_screen_name?(me)
66
+ def mutual_friends(me = nil)
67
+ if me.nil?
68
+ friends_parallelly.to_a & followers_parallelly.to_a
69
+ elsif uid_or_screen_name?(me)
64
70
  # TODO use friends_and_followers
65
71
  friends_parallelly(me).to_a & followers_parallelly(me).to_a
66
72
  elsif me.respond_to?(:friends) && me.respond_to?(:followers)
@@ -90,7 +96,7 @@ module TwitterWithAutoPagination
90
96
  end
91
97
  end
92
98
 
93
- def removing(pre_me, cur_me)
99
+ def removed(pre_me, cur_me)
94
100
  if uid_or_screen_name?(pre_me) && uid_or_screen_name?(cur_me)
95
101
  friends_parallelly(pre_me).to_a - friends_parallelly(cur_me).to_a
96
102
  elsif pre_me.respond_to?(:friends) && cur_me.respond_to?(:friends)
@@ -100,7 +106,7 @@ module TwitterWithAutoPagination
100
106
  end
101
107
  end
102
108
 
103
- def removed(pre_me, cur_me)
109
+ def removed_by(pre_me, cur_me)
104
110
  if uid_or_screen_name?(pre_me) && uid_or_screen_name?(cur_me)
105
111
  followers_parallelly(pre_me).to_a - followers_parallelly(cur_me).to_a
106
112
  elsif pre_me.respond_to?(:followers) && cur_me.respond_to?(:followers)
@@ -118,7 +124,7 @@ module TwitterWithAutoPagination
118
124
 
119
125
  # users which specified user is replying
120
126
  # in_reply_to_user_id and in_reply_to_status_id is not used because of distinguishing mentions from replies
121
- def replying(*args)
127
+ def replied(*args)
122
128
  options = args.extract_options!
123
129
  tweets =
124
130
  if args.empty?
@@ -157,7 +163,7 @@ module TwitterWithAutoPagination
157
163
 
158
164
  # users which specified user is replied
159
165
  # when user is login you had better to call mentions_timeline
160
- def replied(*args)
166
+ def replied_by(*args)
161
167
  options = args.extract_options!
162
168
 
163
169
  result =
@@ -192,7 +198,7 @@ module TwitterWithAutoPagination
192
198
  end.flatten
193
199
  end
194
200
 
195
- def favoriting(*args)
201
+ def users_you_faved(*args)
196
202
  options = args.extract_options!
197
203
 
198
204
  favs =
@@ -229,7 +235,7 @@ module TwitterWithAutoPagination
229
235
  end
230
236
  end
231
237
 
232
- def favorited_by(*args)
238
+ def users_fav_you(*args)
233
239
  end
234
240
 
235
241
  def close_friends(*args)
@@ -7,14 +7,14 @@ module TwitterWithAutoPagination
7
7
 
8
8
  def __uid
9
9
  ActiveSupport::Deprecation.warn(<<-MESSAGE.strip_heredoc)
10
- `TwitterWithAutoPagination::Utils#__uid` is deprecated.
10
+ `TwitterWithAutoPagination::Utils##{__method__}` is deprecated.
11
11
  MESSAGE
12
12
  uid
13
13
  end
14
14
 
15
15
  def __uid_i
16
16
  ActiveSupport::Deprecation.warn(<<-MESSAGE.strip_heredoc)
17
- `TwitterWithAutoPagination::Utils#__uid_i` is deprecated.
17
+ `TwitterWithAutoPagination::Utils##{__method__}` is deprecated.
18
18
  MESSAGE
19
19
  uid
20
20
  end
@@ -26,7 +26,7 @@ module TwitterWithAutoPagination
26
26
 
27
27
  def __screen_name
28
28
  ActiveSupport::Deprecation.warn(<<-MESSAGE.strip_heredoc)
29
- `TwitterWithAutoPagination::Utils#__screen_name` is deprecated.
29
+ `TwitterWithAutoPagination::Utils##{__method__}` is deprecated.
30
30
  MESSAGE
31
31
  screen_name
32
32
  end
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = %w[lib]
22
22
  spec.summary = spec.description
23
23
  spec.test_files = Dir.glob('spec/**/*')
24
- spec.version = '0.4.0'
24
+ spec.version = '0.5.0'
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter_with_auto_pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinohara Teruki