line-bot-api 1.18.0 → 1.22.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: 23b8ceb7011bc2da255888239f7d9a26622ea7713f8fb6154c8aa4637c5c0be0
4
- data.tar.gz: 885e68bbd4485d411f5e79e1bfc1aa2a29e9d6c07d64d91db22cd4387c0d334d
3
+ metadata.gz: a36da29494cce63f76dcb86eeb598ee138cdac97c3e8d1b9a3cd630de77f969e
4
+ data.tar.gz: e44f44089b1047692f57a95733a7fe73aa6362f45838280eedb8e14286d832ee
5
5
  SHA512:
6
- metadata.gz: 1c0e0b1dec8a0a39167225065c44c58b19d662178cd68162c1f3c98cbf0350dfcec8dc73922506bb9a7251479380e21cbe62e3765f97fbf91200267f19aef340
7
- data.tar.gz: 924774871d263700bc7e38dd0ab338e66009f573222e3bb49c7c97464d5da0017d7ec8a902f82c5713c1cfe9dedd9d8ba6e749e73ecdfc2282db833c41a66d5e
6
+ metadata.gz: d1f110ae8342f09be0d07bc335ce8f982868d10e26b9bc3eef0c0a60b77b0c1a06dde346eab279250b0c521888978db673a50c6db17d070d1650608fc2fb080a
7
+ data.tar.gz: 7ab72e341fb0db004519df79eb2ef95e802f54da19fa90087d193c7bd493523fbb1069a70fd1c8b6be07ba7249491f1c4775fca298d8e6c4a97530ce9046279f
@@ -15,7 +15,7 @@
15
15
  module Line
16
16
  module Bot
17
17
  module API
18
- VERSION = "1.18.0"
18
+ VERSION = "1.22.0"
19
19
  end
20
20
  end
21
21
  end
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"
@@ -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,57 @@ 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
+ endpoint_path = '/oauth2/v2.1/token'
120
+ payload = URI.encode_www_form(
121
+ grant_type: 'client_credentials',
122
+ client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
123
+ client_assertion: jwt
124
+ )
125
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
126
+ post(oauth_endpoint, endpoint_path, payload, headers)
127
+ end
128
+
129
+ # Revoke channel access token v2.1
130
+ #
131
+ # @param access_token [String]
132
+ #
133
+ # @return [Net::HTTPResponse]
134
+ def revoke_channel_access_token_jwt(access_token)
135
+ channel_id_required
136
+ channel_secret_required
137
+
138
+ endpoint_path = '/oauth2/v2.1/revoke'
139
+ payload = URI.encode_www_form(
140
+ client_id: channel_id,
141
+ client_secret: channel_secret,
142
+ access_token: access_token
143
+ )
144
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
145
+ post(oauth_endpoint, endpoint_path, payload, headers)
146
+ end
147
+
148
+ # Get all valid channel access token key IDs v2.1
149
+ #
150
+ # @param jwt [String]
151
+ #
152
+ # @return [Net::HTTPResponse]
153
+ def get_channel_access_token_key_ids_jwt(jwt)
154
+ payload = URI.encode_www_form(
155
+ client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
156
+ client_assertion: jwt
157
+ )
158
+ endpoint_path = "/oauth2/v2.1/tokens/kid?#{payload}"
159
+
160
+ headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
161
+ get(oauth_endpoint, endpoint_path, headers)
162
+ end
163
+
109
164
  # Push messages to a user using user_id.
110
165
  #
111
166
  # @param user_id [String] User Id
@@ -274,6 +329,20 @@ module Line
274
329
  get(endpoint, endpoint_path, credentials)
275
330
  end
276
331
 
332
+ # Get user IDs of who added your LINE Official Account as a friend
333
+ #
334
+ # @param continuation_token [String] Identifier to return next page
335
+ # (next property to be included in the response)
336
+ #
337
+ # @return [Net::HTTPResponse]
338
+ def get_follower_ids(continuation_token = nil)
339
+ channel_token_required
340
+
341
+ endpoint_path = "/bot/followers/ids"
342
+ endpoint_path += "?start=#{continuation_token}" if continuation_token
343
+ get(endpoint, endpoint_path, credentials)
344
+ end
345
+
277
346
  # Get user IDs of a group
278
347
  #
279
348
  # @param group_id [String] Group's identifier
@@ -478,6 +547,66 @@ module Line
478
547
  delete(endpoint, endpoint_path, credentials)
479
548
  end
480
549
 
550
+ # Set rich menu alias
551
+ #
552
+ # @param rich_menu_id [String] ID of an uploaded rich menu
553
+ # @param rich_menu_alias_id [String] string of alias words rich menu
554
+ #
555
+ # @return [Net::HTTPResponse]
556
+ def set_rich_menus_alias(rich_menu_id, rich_menu_alias_id)
557
+ channel_token_required
558
+
559
+ endpoint_path = '/bot/richmenu/alias'
560
+ post(endpoint, endpoint_path, { richMenuId: rich_menu_id, richMenuAliasId: rich_menu_alias_id }.to_json, credentials)
561
+ end
562
+
563
+ # Unset rich menu alias
564
+ #
565
+ # @param rich_menu_alias_id [String] string of alias words rich menu
566
+ #
567
+ # @return [Net::HTTPResponse]
568
+ def unset_rich_menus_alias(rich_menu_alias_id)
569
+ channel_token_required
570
+
571
+ endpoint_path = "/bot/richmenu/alias/#{rich_menu_alias_id}"
572
+ delete(endpoint, endpoint_path, credentials)
573
+ end
574
+
575
+ # Update rich menu alias
576
+ #
577
+ # @param rich_menu_id [String] ID of an uploaded rich menu
578
+ # @param rich_menu_alias_id [String] string of alias words rich menu
579
+ #
580
+ # @return [Net::HTTPResponse]
581
+ def update_rich_menus_alias(rich_menu_id, rich_menu_alias_id)
582
+ channel_token_required
583
+
584
+ endpoint_path = "/bot/richmenu/alias/#{rich_menu_alias_id}"
585
+ post(endpoint, endpoint_path, { richMenuId: rich_menu_id }.to_json, credentials)
586
+ end
587
+
588
+ # Get a rich menu alias via a rich menu alias ID
589
+ #
590
+ # @param rich_menu_alias_id [String] string of alias words rich menu
591
+ #
592
+ # @return [Net::HTTPResponse]
593
+ def get_rich_menus_alias(rich_menu_alias_id)
594
+ channel_token_required
595
+
596
+ endpoint_path = "/bot/richmenu/alias/#{rich_menu_alias_id}"
597
+ get(endpoint, endpoint_path, credentials)
598
+ end
599
+
600
+ # Get a list of all uploaded rich menus alias
601
+ #
602
+ # @return [Net::HTTPResponse]
603
+ def get_rich_menus_alias_list
604
+ channel_token_required
605
+
606
+ endpoint_path = "/bot/richmenu/alias/list"
607
+ get(endpoint, endpoint_path, credentials)
608
+ end
609
+
481
610
  # Link a rich menu to a user
482
611
  #
483
612
  # If you want to link a rich menu to multiple users,
@@ -940,7 +1069,7 @@ module Line
940
1069
  def validate_signature(content, channel_signature)
941
1070
  return false if !channel_signature || !channel_secret
942
1071
 
943
- hash = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, channel_secret, content)
1072
+ hash = OpenSSL::HMAC.digest(OpenSSL::Digest.new('SHA256'), channel_secret, content)
944
1073
  signature = Base64.strict_encode64(hash)
945
1074
 
946
1075
  variable_secure_compare(channel_signature, signature)
@@ -972,6 +1101,7 @@ module Line
972
1101
  if file.respond_to?(:content_type)
973
1102
  content_type = file.content_type
974
1103
  raise ArgumentError, "invalid content type: #{content_type}" unless ['image/jpeg', 'image/png'].include?(content_type)
1104
+
975
1105
  content_type
976
1106
  else
977
1107
  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.18.0
4
+ version: 1.22.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: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -114,14 +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
- rubygems_version: 3.1.2
124
+ rubygems_version: 3.1.6
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: SDK of the LINE Messaging API