line-bot-api 1.17.0 → 1.21.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
  SHA256:
3
- metadata.gz: e837c0acd52ebd33855c78b8708ad54ab2837dc76576bb386bbe4861eeae20e3
4
- data.tar.gz: 9e175c41953a8603f0a1b0e35285160fe2ed63cf028296a94272a6d65dac4a9f
3
+ metadata.gz: 0c7c212cf7261c341fbd02845a3f678aa8d2eadd302a5fef4bb4e574a4013062
4
+ data.tar.gz: b87face2a4aacc3245a678c6cf21099702ca352c26e42ed3377e98565dceaf1f
5
5
  SHA512:
6
- metadata.gz: 303b7cd0c88d07dd31fa5d4ee3d0784ba7999fb4677bd9bf3a801adad54d8926e0697ae87dc0a457593849fba0d30e2ddbeb4eba647adac5974115ad81a56b58
7
- data.tar.gz: 1ddbcb86b9737d3d7b106489768fa9f1af38608a5eda8d0c59dd7713da4ba6a41e675677b99e26f8f6060be09e24df36a3e24bea721b2faad9d44e4ef38b144f
6
+ metadata.gz: 860c6649dcb835b6f495fefd96b27b98cd2501fc5b3c93479b7cd10a65fd396e4008f86d6cd6fe74dc3cba8f9fd3392f20ee2151d6345087e7ab216124e12ab6
7
+ data.tar.gz: 18f79d5e93ec212165d4855e60060f8fc5b9c91e9b6f804e0469f4d18215565f0141ff17b6dfcf0fed35eefd6d289ce7fa4d15c138b345d0d2047fe3d7f6c807
data/lib/line/bot/api.rb CHANGED
@@ -17,6 +17,7 @@ require 'line/bot/api/version'
17
17
  module Line
18
18
  module Bot
19
19
  module API
20
+ DEFAULT_OAUTH_ENDPOINT = "https://api.line.me"
20
21
  DEFAULT_ENDPOINT = "https://api.line.me/v2"
21
22
  DEFAULT_BLOB_ENDPOINT = "https://api-data.line.me/v2"
22
23
  DEFAULT_LIFF_ENDPOINT = "https://api.line.me/liff/v1"
@@ -15,7 +15,7 @@
15
15
  module Line
16
16
  module Bot
17
17
  module API
18
- VERSION = "1.17.0"
18
+ VERSION = "1.21.0"
19
19
  end
20
20
  end
21
21
  end
@@ -55,6 +55,10 @@ module Line
55
55
  @endpoint ||= API::DEFAULT_ENDPOINT
56
56
  end
57
57
 
58
+ def oauth_endpoint
59
+ @oauth_endpoint ||= API::DEFAULT_OAUTH_ENDPOINT
60
+ end
61
+
58
62
  def blob_endpoint
59
63
  return @blob_endpoint if @blob_endpoint
60
64
 
@@ -106,6 +110,63 @@ module Line
106
110
  post(endpoint, endpoint_path, payload, headers)
107
111
  end
108
112
 
113
+ # Issue channel access token v2.1
114
+ #
115
+ # @param jwt [String]
116
+ #
117
+ # @return [Net::HTTPResponse]
118
+ def issue_channel_access_token_jwt(jwt)
119
+ channel_id_required
120
+ channel_secret_required
121
+
122
+ endpoint_path = '/oauth2/v2.1/token'
123
+ payload = URI.encode_www_form(
124
+ grant_type: 'client_credentials',
125
+ client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
126
+ client_assertion: jwt
127
+ )
128
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
129
+ post(oauth_endpoint, endpoint_path, payload, headers)
130
+ end
131
+
132
+ # Revoke channel access token v2.1
133
+ #
134
+ # @param access_token [String]
135
+ #
136
+ # @return [Net::HTTPResponse]
137
+ def revoke_channel_access_token_jwt(access_token)
138
+ channel_id_required
139
+ channel_secret_required
140
+
141
+ endpoint_path = '/oauth2/v2.1/revoke'
142
+ payload = URI.encode_www_form(
143
+ client_id: channel_id,
144
+ client_secret: channel_secret,
145
+ access_token: access_token
146
+ )
147
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
148
+ post(oauth_endpoint, endpoint_path, payload, headers)
149
+ end
150
+
151
+ # Get all valid channel access token key IDs v2.1
152
+ #
153
+ # @param jwt [String]
154
+ #
155
+ # @return [Net::HTTPResponse]
156
+ def get_channel_access_token_key_ids_jwt(jwt)
157
+ channel_id_required
158
+ channel_secret_required
159
+
160
+ payload = URI.encode_www_form(
161
+ client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
162
+ client_assertion: jwt
163
+ )
164
+ endpoint_path = "/oauth2/v2.1/tokens/kid?#{payload}"
165
+
166
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
167
+ get(oauth_endpoint, endpoint_path, headers)
168
+ end
169
+
109
170
  # Push messages to a user using user_id.
110
171
  #
111
172
  # @param user_id [String] User Id
@@ -274,6 +335,20 @@ module Line
274
335
  get(endpoint, endpoint_path, credentials)
275
336
  end
276
337
 
338
+ # Get user IDs of who added your LINE Official Account as a friend
339
+ #
340
+ # @param continuation_token [String] Identifier to return next page
341
+ # (next property to be included in the response)
342
+ #
343
+ # @return [Net::HTTPResponse]
344
+ def get_follower_ids(continuation_token = nil)
345
+ channel_token_required
346
+
347
+ endpoint_path = "/bot/followers/ids"
348
+ endpoint_path += "?start=#{continuation_token}" if continuation_token
349
+ get(endpoint, endpoint_path, credentials)
350
+ end
351
+
277
352
  # Get user IDs of a group
278
353
  #
279
354
  # @param group_id [String] Group's identifier
@@ -478,6 +553,31 @@ module Line
478
553
  delete(endpoint, endpoint_path, credentials)
479
554
  end
480
555
 
556
+ # Set rich menu alias
557
+ #
558
+ # @param rich_menu_id [String] ID of an uploaded rich menu
559
+ # @param rich_menu_alias_id [String] string of alias words rich menu
560
+ #
561
+ # @return [Net::HTTPResponse]
562
+ def set_rich_menus_alias(rich_menu_id, rich_menu_alias_id)
563
+ channel_token_required
564
+
565
+ endpoint_path = '/bot/richmenu/alias'
566
+ post(endpoint, endpoint_path, { richMenuId: rich_menu_id, richMenuAliasId: rich_menu_alias_id }.to_json, credentials)
567
+ end
568
+
569
+ # Unset rich menu alias
570
+ #
571
+ # @param rich_menu_alias_id [String] string of alias words rich menu
572
+ #
573
+ # @return [Net::HTTPResponse]
574
+ def unset_rich_menus_alias(rich_menu_alias_id)
575
+ channel_token_required
576
+
577
+ endpoint_path = "/bot/richmenu/alias/#{rich_menu_alias_id}"
578
+ delete(endpoint, endpoint_path, credentials)
579
+ end
580
+
481
581
  # Link a rich menu to a user
482
582
  #
483
583
  # If you want to link a rich menu to multiple users,
@@ -645,6 +745,46 @@ module Line
645
745
  get(endpoint, endpoint_path, credentials)
646
746
  end
647
747
 
748
+ # Gets information on a webhook endpoint.
749
+ #
750
+ # @return [Net::HTTPResponse]
751
+ def get_webhook_endpoint
752
+ channel_token_required
753
+
754
+ endpoint_path = '/bot/channel/webhook/endpoint'
755
+ get(endpoint, endpoint_path, credentials)
756
+ end
757
+
758
+ # Sets the webhook endpoint URL.
759
+ #
760
+ # @param webhook_endpoint [String]
761
+ #
762
+ # @return [Net::HTTPResponse]
763
+ def set_webhook_endpoint(webhook_endpoint)
764
+ channel_token_required
765
+
766
+ endpoint_path = '/bot/channel/webhook/endpoint'
767
+ body = {endpoint: webhook_endpoint}
768
+ put(endpoint, endpoint_path, body.to_json, credentials)
769
+ end
770
+
771
+ # Checks if the configured webhook endpoint can receive a test webhook event.
772
+ #
773
+ # @param webhook_endpoint [String] options
774
+ #
775
+ # @return [Net::HTTPResponse]
776
+ def test_webhook_endpoint(webhook_endpoint = nil)
777
+ channel_token_required
778
+
779
+ endpoint_path = '/bot/channel/webhook/test'
780
+ body = if webhook_endpoint.nil?
781
+ {}
782
+ else
783
+ {endpoint: webhook_endpoint}
784
+ end
785
+ post(endpoint, endpoint_path, body.to_json, credentials)
786
+ end
787
+
648
788
  def get_liff_apps
649
789
  channel_token_required
650
790
 
@@ -900,7 +1040,7 @@ module Line
900
1040
  def validate_signature(content, channel_signature)
901
1041
  return false if !channel_signature || !channel_secret
902
1042
 
903
- hash = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, channel_secret, content)
1043
+ hash = OpenSSL::HMAC.digest(OpenSSL::Digest.new('SHA256'), channel_secret, content)
904
1044
  signature = Base64.strict_encode64(hash)
905
1045
 
906
1046
  variable_secure_compare(channel_signature, signature)
@@ -932,6 +1072,7 @@ module Line
932
1072
  if file.respond_to?(:content_type)
933
1073
  content_type = file.content_type
934
1074
  raise ArgumentError, "invalid content type: #{content_type}" unless ['image/jpeg', 'image/png'].include?(content_type)
1075
+
935
1076
  content_type
936
1077
  else
937
1078
  case file.path
@@ -23,6 +23,10 @@ module Line
23
23
  def [](key)
24
24
  @src[key]
25
25
  end
26
+
27
+ def to_hash
28
+ @src
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -38,10 +38,8 @@ module Line
38
38
  http.use_ssl = true
39
39
  end
40
40
 
41
- if http_options
42
- http_options.each do |key, value|
43
- http.send("#{key}=", value)
44
- end
41
+ http_options&.each do |key, value|
42
+ http.send("#{key}=", value)
45
43
  end
46
44
 
47
45
  http
data/line-bot-api.gemspec CHANGED
@@ -17,10 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.required_ruby_version = '>= 2.0.0'
20
+ spec.required_ruby_version = '>= 2.4.0'
21
21
 
22
22
  spec.add_development_dependency "addressable", "~> 2.3"
23
- spec.add_development_dependency "bundler", "~> 1.11" if RUBY_VERSION < "2.3"
24
23
  spec.add_development_dependency 'rake', "~> 13.0"
25
24
  spec.add_development_dependency "rspec", "~> 3.0"
26
25
  spec.add_development_dependency "webmock", "~> 3.8"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: line-bot-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.0
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - LINE Corporation
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-18 00:00:00.000000000 Z
11
+ date: 2021-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -114,15 +114,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.0.0
117
+ version: 2.4.0
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.7.6
124
+ rubygems_version: 3.1.6
126
125
  signing_key:
127
126
  specification_version: 4
128
127
  summary: SDK of the LINE Messaging API