twttr 0.0.3 → 0.0.6

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
  SHA256:
3
- metadata.gz: 2fe60301d1d17eb4a2904de32bbd649364bb864e13cbe9c56c5151d987c34ec4
4
- data.tar.gz: c7c28b855390fe720ce157d49e8d6f7525ae14ad797bc1a1fbdda77ed4efabfb
3
+ metadata.gz: ce5304b9106f2f665c6787d7e3ee22f83076712f8ee96b33f6b7615a85759dae
4
+ data.tar.gz: bf914ca056645501d2f012900f76286cb9f0a18baa347618d3ef297f04c2c01e
5
5
  SHA512:
6
- metadata.gz: aa537df933312dea3e75e86dcf6828b7d8ca2cc81138ec46f7b3e867b81dcaa01c542c601306f26f8c8d68590762071bb80d04dd88ef155c5df0798abf568e3d
7
- data.tar.gz: fe96a4b38af080331a25a6be5a31d9e5cfc98d0b95b54faabfd1b45dce89bdb1e16e37635eace45bb7a8ef9c63983f295024ebe1fd82c4e7ad15a14c9b823795
6
+ metadata.gz: 54d2b7ed3ab4bebd4a82fa58965456eee9c5c8896ca8ef29054578f81ce6500dc1906fa8361c85c1300fdf6e2e6631d95f175f17f2ebee60dd5eaab2ac1fba18
7
+ data.tar.gz: 948a69e7cab9210b857526594131641565e44beeb50932a8967fef0a3c6ca794714ee9dd1f527f4ab277ea6caf3b27a539de817db17fc28fbc3487d45126193a
@@ -8,18 +8,53 @@ module Twttr
8
8
  # Twitter API V2 User Follow related endpoints
9
9
  # https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference
10
10
  module Follows
11
+ FOLLOWERS_PATH = "#{Users::USER_PATH}/followers"
11
12
  FOLLOWING_PATH = "#{Users::USER_PATH}/following"
12
13
 
14
+ # GET /2/users/:id/followers
15
+ # https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/get-users-id-followers
16
+ #
17
+ # Returns paginated list of users following user_id.
18
+ #
19
+ # @param user_id [String] The user ID whose followers you would like to retrieve.
20
+ # @param max_results [Integer] Max number of results per peage.
21
+ # @param pagination_token [String] Initial page pagination token.
22
+ # @yield [Array<Twttr::Model::User>] User followers page.
23
+ # @yield [String,NilClass] Pagination token.
24
+ # @return [Array<Twttr::Model::User>] Follower Users.
25
+ def followers(user_id, max_results: nil, pagination_token: nil, &block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
26
+ response = get(FOLLOWERS_PATH, params: { user_id: user_id },
27
+ query_params: {
28
+ 'user.fields': config.user_fields,
29
+ max_results: max_results,
30
+ pagination_token: pagination_token
31
+ }.compact)
32
+
33
+ return [] if response['meta']['result_count'].zero?
34
+
35
+ users = response['data'].map { |v| Model::User.new(v, self) }
36
+
37
+ pagination_token = response['meta']['pagination_token']
38
+
39
+ yield users, pagination_token if block_given?
40
+
41
+ return users if pagination_token.nil?
42
+
43
+ users + followers(user_id, pagination_token: pagination_token, &block)
44
+ end
45
+
13
46
  # GET /2/users/:id/following
14
47
  # https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/get-users-id-following
15
48
  #
49
+ # Returns paginated list of users followed by user_id.
50
+ #
16
51
  # @param user_id [String] The user ID whose following you would like to retrieve.
17
52
  # @param max_results [Integer] Max number of results per peage.
18
53
  # @param pagination_token [String] Initial page pagination token.
19
54
  # @yield [Array<Twttr::Model::User>] Users followed by page.
55
+ # @yield [String,NilClass] Pagination token.
20
56
  # @return [Array<Twttr::Model::User>] Users followed.
21
- # @return [String,NilClass] Pagination token.
22
- def following(user_id, max_results: nil, pagination_token: nil, &block) # rubocop:disable Metrics/MethodLength
57
+ def following(user_id, max_results: nil, pagination_token: nil, &block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
23
58
  response = get(FOLLOWING_PATH, params: { user_id: user_id },
24
59
  query_params: {
25
60
  'user.fields': config.user_fields,
@@ -27,17 +62,17 @@ module Twttr
27
62
  pagination_token: pagination_token
28
63
  }.compact)
29
64
 
30
- return [], nil if response['meta']['result_count'].zero?
65
+ return [] if response['meta']['result_count'].zero?
31
66
 
32
67
  users = response['data'].map { |v| Model::User.new(v, self) }
33
68
 
34
69
  pagination_token = response['meta']['pagination_token']
35
70
 
36
- return users, pagination_token unless block_given?
71
+ yield users, pagination_token if block_given?
37
72
 
38
- yield users, pagination_token
73
+ return users if pagination_token.nil?
39
74
 
40
- following(user_id, pagination_token, &block) unless pagination_token.nil?
75
+ users + following(user_id, pagination_token: pagination_token, &block)
41
76
  end
42
77
  end
43
78
  end
@@ -9,31 +9,84 @@ module Twttr
9
9
  module Users
10
10
  ME_PATH = "#{V2::V2_PATH}/users/me"
11
11
  USERS_PATH = "#{V2::V2_PATH}/users"
12
+ USERS_BY_PATH = "#{V2::V2_PATH}/users/by"
12
13
  USER_BY_USERNAME_PATH = "#{V2::V2_PATH}/users/by/username/%<username>s"
13
14
  USER_PATH = "#{V2::V2_PATH}/users/%<user_id>s"
14
15
 
16
+ # GET /2/users/:id/following
17
+ # https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/get-users-id-following
18
+ #
19
+ # Returns paginated list of users followed by user_id.
20
+ #
21
+ # @param user_id [String] The user ID whose following you would like to retrieve.
22
+ # @param max_results [Integer] Max number of results per peage.
23
+ # @param pagination_token [String] Initial page pagination token.
24
+ # @yield [Array<Twttr::Model::User>] Users followed by page.
25
+ # @yield [String,NilClass] Pagination token.
26
+ # @return [Array<Twttr::Model::User>] Users followed.
27
+
28
+ # GET /2/users/me
29
+ # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-me
30
+ #
31
+ # Returns current authenticated user
32
+ #
33
+ # @return [Twttr::Model::User] Current user.
15
34
  def me
16
35
  response = get(ME_PATH, query_params: { 'user.fields': config.user_fields })
17
36
  Model::User.new(response['data'], self)
18
37
  end
19
38
 
39
+ # GET /2/users/:id
40
+ # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-id
41
+ #
42
+ # Returns target user by id
43
+ #
44
+ # @param user_id [String] Traget user id.
45
+ # @return [Twttr::Model::User] Target user.
20
46
  def user(user_id)
21
47
  response = get(USER_PATH, params: { user_id: user_id },
22
48
  query_params: { 'user.fields': config.user_fields })
23
49
  Model::User.new(response['data'], self)
24
50
  end
25
51
 
52
+ # GET /2/users/by/username/:username
53
+ # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
54
+ #
55
+ # Returns target user by username
56
+ #
57
+ # @param username [String] Traget username.
58
+ # @return [Twttr::Model::User] Target user.
26
59
  def user_by_username(username)
27
60
  response = get(USER_BY_USERNAME_PATH, params: { username: username },
28
61
  query_params: { 'user.fields': config.user_fields })
29
62
  Model::User.new(response['data'], self)
30
63
  end
31
64
 
65
+ # GET /2/users
66
+ # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users
67
+ #
68
+ # Returns target users by id
69
+ #
70
+ # @param user_ids [Array<String>] Traget user ids.
71
+ # @return [Array<Twttr::Model::User>] Target users.
32
72
  def users(user_ids)
33
73
  response = get(USERS_PATH,
34
74
  query_params: { ids: user_ids.join(','), 'user.fields': config.user_fields })
35
75
  response['data'].map { |v| Model::User.new(v, self) }
36
76
  end
77
+
78
+ # GET /2/users/by
79
+ # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by
80
+ #
81
+ # Returns target users by username
82
+ #
83
+ # @param usernames [Array<String>] Traget usernames.
84
+ # @return [Array<Twttr::Model::User>] Target users.
85
+ def users_by(usernames)
86
+ response = get(USERS_BY_PATH,
87
+ query_params: { usernames: usernames.join(','), 'user.fields': config.user_fields })
88
+ response['data'].map { |v| Model::User.new(v, self) }
89
+ end
37
90
  end
38
91
  end
39
92
  end
@@ -15,6 +15,18 @@ module Twttr
15
15
  @client = client
16
16
  end
17
17
 
18
+ # Forwards to Follows#following setting user_id to current user's id.
19
+ #
20
+ # GET /2/users/:id/following
21
+ # https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/get-users-id-following
22
+ #
23
+ # Returns paginated list of users followed by user_id.
24
+ #
25
+ # @param max_results [Integer] Max number of results per peage.
26
+ # @param pagination_token [String] Initial page pagination token.
27
+ # @yield [Array<Twttr::Model::User>] Users followed by page.
28
+ # @yield [String,NilClass] Pagination token.
29
+ # @return [Array<Twttr::Model::User>] Users followed.
18
30
  def following(max_results: nil, pagination_token: nil, &block)
19
31
  client.following(id, max_results: max_results, pagination_token: pagination_token, &block)
20
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twttr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Decurnex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-08 00:00:00.000000000 Z
11
+ date: 2022-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth