line-bot-api 1.17.0 → 1.21.0

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