twttr 0.0.3 → 0.0.6

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
  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