line-bot-api 1.14.0 → 1.18.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: cc272a376d9eb4be79d9c92ee485737c6474f652c0873923010f5b25d1d78c1a
4
- data.tar.gz: 4beb042559850867763cec2920ac0715877c2b2a7b5538c8a749bd226de2571e
3
+ metadata.gz: 23b8ceb7011bc2da255888239f7d9a26622ea7713f8fb6154c8aa4637c5c0be0
4
+ data.tar.gz: 885e68bbd4485d411f5e79e1bfc1aa2a29e9d6c07d64d91db22cd4387c0d334d
5
5
  SHA512:
6
- metadata.gz: 6ca96d2225493a374bc23497b075a740ff95f469d4b2b832143083c96a1d4d319482ccb1c7b4a4f6bc0dbd93774bd49a6425c3dbc0a4d552b6afa6795125061e
7
- data.tar.gz: 1809fa4bbadda5065d2f8ec1e8d4bc7fd266c1f0014623bd4606488ba6266cc8e4321fe498edf2aa63c8f6cab3bb397094d0c2aff12c37dad9c9bd5be5dfd439
6
+ metadata.gz: 1c0e0b1dec8a0a39167225065c44c58b19d662178cd68162c1f3c98cbf0350dfcec8dc73922506bb9a7251479380e21cbe62e3765f97fbf91200267f19aef340
7
+ data.tar.gz: 924774871d263700bc7e38dd0ab338e66009f573222e3bb49c7c97464d5da0017d7ec8a902f82c5713c1cfe9dedd9d8ba6e749e73ecdfc2282db833c41a66d5e
@@ -19,10 +19,11 @@ module Line
19
19
  module API
20
20
  DEFAULT_ENDPOINT = "https://api.line.me/v2"
21
21
  DEFAULT_BLOB_ENDPOINT = "https://api-data.line.me/v2"
22
+ DEFAULT_LIFF_ENDPOINT = "https://api.line.me/liff/v1"
22
23
 
23
24
  DEFAULT_HEADERS = {
24
25
  'Content-Type' => 'application/json; charset=UTF-8',
25
- 'User-Agent' => "LINE-BotSDK-Ruby/#{Line::Bot::API::VERSION}"
26
+ 'User-Agent' => "LINE-BotSDK-Ruby/#{VERSION}"
26
27
  }.freeze
27
28
  end
28
29
  end
@@ -15,7 +15,7 @@
15
15
  module Line
16
16
  module Bot
17
17
  module API
18
- VERSION = "1.14.0"
18
+ VERSION = "1.18.0"
19
19
  end
20
20
  end
21
21
  end
@@ -48,24 +48,28 @@ module Line
48
48
  end
49
49
 
50
50
  def httpclient
51
- @httpclient ||= Line::Bot::HTTPClient.new(http_options)
51
+ @httpclient ||= HTTPClient.new(http_options)
52
52
  end
53
53
 
54
54
  def endpoint
55
- @endpoint ||= Line::Bot::API::DEFAULT_ENDPOINT
55
+ @endpoint ||= API::DEFAULT_ENDPOINT
56
56
  end
57
57
 
58
58
  def blob_endpoint
59
59
  return @blob_endpoint if @blob_endpoint
60
60
 
61
- @blob_endpoint = if endpoint == Line::Bot::API::DEFAULT_ENDPOINT
62
- Line::Bot::API::DEFAULT_BLOB_ENDPOINT
61
+ @blob_endpoint = if endpoint == API::DEFAULT_ENDPOINT
62
+ API::DEFAULT_BLOB_ENDPOINT
63
63
  else
64
64
  # for backward compatible
65
65
  endpoint
66
66
  end
67
67
  end
68
68
 
69
+ def liff_endpoint
70
+ @liff_endpoint ||= API::DEFAULT_LIFF_ENDPOINT
71
+ end
72
+
69
73
  # @return [Hash]
70
74
  def credentials
71
75
  {
@@ -106,15 +110,16 @@ module Line
106
110
  #
107
111
  # @param user_id [String] User Id
108
112
  # @param messages [Hash or Array] Message Objects
113
+ # @param headers [Hash] HTTP Headers
109
114
  # @return [Net::HTTPResponse]
110
- def push_message(user_id, messages)
115
+ def push_message(user_id, messages, headers: {})
111
116
  channel_token_required
112
117
 
113
118
  messages = [messages] if messages.is_a?(Hash)
114
119
 
115
120
  endpoint_path = '/bot/message/push'
116
121
  payload = { to: user_id, messages: messages }.to_json
117
- post(endpoint, endpoint_path, payload, credentials)
122
+ post(endpoint, endpoint_path, payload, credentials.merge(headers))
118
123
  end
119
124
 
120
125
  # Reply messages to a user using replyToken.
@@ -151,8 +156,9 @@ module Line
151
156
  #
152
157
  # @param to [Array or String] Array of userIds
153
158
  # @param messages [Hash or Array] Message Objects
159
+ # @param headers [Hash] HTTP Headers
154
160
  # @return [Net::HTTPResponse]
155
- def multicast(to, messages)
161
+ def multicast(to, messages, headers: {})
156
162
  channel_token_required
157
163
 
158
164
  to = [to] if to.is_a?(String)
@@ -160,21 +166,23 @@ module Line
160
166
 
161
167
  endpoint_path = '/bot/message/multicast'
162
168
  payload = { to: to, messages: messages }.to_json
163
- post(endpoint, endpoint_path, payload, credentials)
169
+ post(endpoint, endpoint_path, payload, credentials.merge(headers))
164
170
  end
165
171
 
166
172
  # Send messages to all friends.
167
173
  #
168
174
  # @param messages [Hash or Array] Message Objects
175
+ # @param headers [Hash] HTTP Headers
176
+ #
169
177
  # @return [Net::HTTPResponse]
170
- def broadcast(messages)
178
+ def broadcast(messages, headers: {})
171
179
  channel_token_required
172
180
 
173
181
  messages = [messages] if messages.is_a?(Hash)
174
182
 
175
183
  endpoint_path = '/bot/message/broadcast'
176
184
  payload = { messages: messages }.to_json
177
- post(endpoint, endpoint_path, payload, credentials)
185
+ post(endpoint, endpoint_path, payload, credentials.merge(headers))
178
186
  end
179
187
 
180
188
  # Narrowcast messages to users
@@ -186,9 +194,10 @@ module Line
186
194
  # @param recipient [Hash]
187
195
  # @param filter [Hash]
188
196
  # @param limit [Hash]
197
+ # @param headers [Hash] HTTP Headers
189
198
  #
190
199
  # @return [Net::HTTPResponse]
191
- def narrowcast(messages, recipient: nil, filter: nil, limit: nil)
200
+ def narrowcast(messages, recipient: nil, filter: nil, limit: nil, headers: {})
192
201
  channel_token_required
193
202
 
194
203
  messages = [messages] if messages.is_a?(Hash)
@@ -200,7 +209,7 @@ module Line
200
209
  filter: filter,
201
210
  limit: limit
202
211
  }.to_json
203
- post(endpoint, endpoint_path, payload, credentials)
212
+ post(endpoint, endpoint_path, payload, credentials.merge(headers))
204
213
  end
205
214
 
206
215
  def leave_group(group_id)
@@ -295,6 +304,42 @@ module Line
295
304
  get(endpoint, endpoint_path, credentials)
296
305
  end
297
306
 
307
+ # Gets the group ID, group name, and group icon URL of a group where the LINE Official Account is a member.
308
+ #
309
+ # @param group_id [String] Group's identifier
310
+ #
311
+ # @return [Net::HTTPResponse]
312
+ def get_group_summary(group_id)
313
+ channel_token_required
314
+
315
+ endpoint_path = "/bot/group/#{group_id}/summary"
316
+ get(endpoint, endpoint_path, credentials)
317
+ end
318
+
319
+ # Gets the user IDs of the members of a group that the bot is in.
320
+ #
321
+ # @param group_id [String] Group's identifier
322
+ #
323
+ # @return [Net::HTTPResponse]
324
+ def get_group_members_count(group_id)
325
+ channel_token_required
326
+
327
+ endpoint_path = "/bot/group/#{group_id}/members/count"
328
+ get(endpoint, endpoint_path, credentials)
329
+ end
330
+
331
+ # Gets the count of members in a room.
332
+ #
333
+ # @param room_id [String] Room's identifier
334
+ #
335
+ # @return [Net::HTTPResponse]
336
+ def get_room_members_count(room_id)
337
+ channel_token_required
338
+
339
+ endpoint_path = "/bot/room/#{room_id}/members/count"
340
+ get(endpoint, endpoint_path, credentials)
341
+ end
342
+
298
343
  # Get a list of all uploaded rich menus
299
344
  #
300
345
  # @return [Net::HTTPResponse]
@@ -507,15 +552,8 @@ module Line
507
552
  def create_rich_menu_image(rich_menu_id, file)
508
553
  channel_token_required
509
554
 
510
- content_type = case file.path
511
- when /\.jpe?g\z/i then 'image/jpeg'
512
- when /\.png\z/i then 'image/png'
513
- else
514
- raise ArgumentError, "invalid file extension: #{file.path}"
515
- end
516
-
517
555
  endpoint_path = "/bot/richmenu/#{rich_menu_id}/content"
518
- headers = credentials.merge('Content-Type' => content_type)
556
+ headers = credentials.merge('Content-Type' => content_type(file))
519
557
  post(blob_endpoint, endpoint_path, file.rewind && file.read, headers)
520
558
  end
521
559
 
@@ -597,6 +635,232 @@ module Line
597
635
  get(endpoint, endpoint_path, credentials)
598
636
  end
599
637
 
638
+ # Gets a bot's basic information.
639
+ #
640
+ # @return [Net::HTTPResponse]
641
+ def get_bot_info
642
+ channel_token_required
643
+
644
+ endpoint_path = '/bot/info'
645
+ get(endpoint, endpoint_path, credentials)
646
+ end
647
+
648
+ # Gets information on a webhook endpoint.
649
+ #
650
+ # @return [Net::HTTPResponse]
651
+ def get_webhook_endpoint
652
+ channel_token_required
653
+
654
+ endpoint_path = '/bot/channel/webhook/endpoint'
655
+ get(endpoint, endpoint_path, credentials)
656
+ end
657
+
658
+ # Sets the webhook endpoint URL.
659
+ #
660
+ # @param webhook_endpoint [String]
661
+ #
662
+ # @return [Net::HTTPResponse]
663
+ def set_webhook_endpoint(webhook_endpoint)
664
+ channel_token_required
665
+
666
+ endpoint_path = '/bot/channel/webhook/endpoint'
667
+ body = {endpoint: webhook_endpoint}
668
+ put(endpoint, endpoint_path, body.to_json, credentials)
669
+ end
670
+
671
+ # Checks if the configured webhook endpoint can receive a test webhook event.
672
+ #
673
+ # @param webhook_endpoint [String] options
674
+ #
675
+ # @return [Net::HTTPResponse]
676
+ def test_webhook_endpoint(webhook_endpoint = nil)
677
+ channel_token_required
678
+
679
+ endpoint_path = '/bot/channel/webhook/test'
680
+ body = if webhook_endpoint.nil?
681
+ {}
682
+ else
683
+ {endpoint: webhook_endpoint}
684
+ end
685
+ post(endpoint, endpoint_path, body.to_json, credentials)
686
+ end
687
+
688
+ def get_liff_apps
689
+ channel_token_required
690
+
691
+ endpoint_path = '/apps'
692
+ get(liff_endpoint, endpoint_path, credentials)
693
+ end
694
+
695
+ def create_liff_app(app)
696
+ channel_token_required
697
+
698
+ endpoint_path = '/apps'
699
+ post(liff_endpoint, endpoint_path, app.to_json, credentials)
700
+ end
701
+
702
+ def update_liff_app(liff_id, app)
703
+ channel_token_required
704
+
705
+ endpoint_path = "/apps/#{liff_id}"
706
+ put(liff_endpoint, endpoint_path, app.to_json, credentials)
707
+ end
708
+
709
+ def delete_liff_app(liff_id)
710
+ channel_token_required
711
+
712
+ endpoint_path = "/apps/#{liff_id}"
713
+ delete(liff_endpoint, endpoint_path, credentials)
714
+ end
715
+
716
+ # Create an audience group by uploading user_ids
717
+ #
718
+ # Parameters are described here.
719
+ # https://developers.line.biz/en/reference/messaging-api/#create-upload-audience-group
720
+ #
721
+ # @param params [Hash] options
722
+ #
723
+ # @return [Net::HTTPResponse] This response includes an audience_group_id.
724
+ def create_user_id_audience(params)
725
+ channel_token_required
726
+
727
+ endpoint_path = '/bot/audienceGroup/upload'
728
+ post(endpoint, endpoint_path, params.to_json, credentials)
729
+ end
730
+
731
+ # Update an audience group
732
+ #
733
+ # Parameters are described here.
734
+ # https://developers.line.biz/en/reference/messaging-api/#update-upload-audience-group
735
+ #
736
+ # @param params [Hash] options
737
+ #
738
+ # @return [Net::HTTPResponse] This response includes an audience_group_id.
739
+ def update_user_id_audience(params)
740
+ channel_token_required
741
+
742
+ endpoint_path = '/bot/audienceGroup/upload'
743
+ put(endpoint, endpoint_path, params.to_json, credentials)
744
+ end
745
+
746
+ # Create an audience group of users that clicked a URL in a message sent in the past
747
+ #
748
+ # Parameters are described here.
749
+ # https://developers.line.biz/en/reference/messaging-api/#create-click-audience-group
750
+ #
751
+ # @param params [Hash] options
752
+ #
753
+ # @return [Net::HTTPResponse] This response includes an audience_group_id.
754
+ def create_click_audience(params)
755
+ channel_token_required
756
+
757
+ endpoint_path = '/bot/audienceGroup/click'
758
+ post(endpoint, endpoint_path, params.to_json, credentials)
759
+ end
760
+
761
+ # Create an audience group of users that opened a message sent in the past
762
+ #
763
+ # Parameters are described here.
764
+ # https://developers.line.biz/en/reference/messaging-api/#create-imp-audience-group
765
+ #
766
+ # @param params [Hash] options
767
+ #
768
+ # @return [Net::HTTPResponse] This response includes an audience_group_id.
769
+ def create_impression_audience(params)
770
+ channel_token_required
771
+
772
+ endpoint_path = '/bot/audienceGroup/imp'
773
+ post(endpoint, endpoint_path, params.to_json, credentials)
774
+ end
775
+
776
+ # Rename an existing audience group
777
+ #
778
+ # @param audience_group_id [Integer]
779
+ # @param description [String]
780
+ #
781
+ # @return [Net::HTTPResponse]
782
+ def rename_audience(audience_group_id, description)
783
+ channel_token_required
784
+
785
+ endpoint_path = "/bot/audienceGroup/#{audience_group_id}/updateDescription"
786
+ body = {description: description}
787
+ put(endpoint, endpoint_path, body.to_json, credentials)
788
+ end
789
+
790
+ # Delete an existing audience group
791
+ #
792
+ # Parameters are described here.
793
+ # https://developers.line.biz/en/reference/messaging-api/#delete-audience-group
794
+ #
795
+ # @param audience_group_id [Integer]
796
+ #
797
+ # @return [Net::HTTPResponse]
798
+ def delete_audience(audience_group_id)
799
+ channel_token_required
800
+
801
+ endpoint_path = "/bot/audienceGroup/#{audience_group_id}"
802
+ delete(endpoint, endpoint_path, credentials)
803
+ end
804
+
805
+ # Get audience group data
806
+ #
807
+ # Parameters are described here.
808
+ # https://developers.line.biz/en/reference/messaging-api/#get-audience-group
809
+ #
810
+ # @param audience_group_id [Integer]
811
+ #
812
+ # @return [Net::HTTPResponse]
813
+ def get_audience(audience_group_id)
814
+ channel_token_required
815
+
816
+ endpoint_path = "/bot/audienceGroup/#{audience_group_id}"
817
+ get(endpoint, endpoint_path, credentials)
818
+ end
819
+
820
+ # Get data for more than one audience group
821
+ #
822
+ # Parameters are described here.
823
+ # https://developers.line.biz/en/reference/messaging-api/#get-audience-groups
824
+ #
825
+ # @param params [Hash] key name `page` is required
826
+ #
827
+ # @return [Net::HTTPResponse]
828
+ def get_audiences(params)
829
+ channel_token_required
830
+
831
+ endpoint_path = "/bot/audienceGroup/list?" + URI.encode_www_form(params)
832
+ get(endpoint, endpoint_path, credentials)
833
+ end
834
+
835
+ # Get the authority level of the audience
836
+ #
837
+ # Parameters are described here.
838
+ # https://developers.line.biz/en/reference/messaging-api/#get-authority-level
839
+ #
840
+ # @return [Net::HTTPResponse]
841
+ def get_audience_authority_level
842
+ channel_token_required
843
+
844
+ endpoint_path = "/bot/audienceGroup/authorityLevel"
845
+ get(endpoint, endpoint_path, credentials)
846
+ end
847
+
848
+ # Change the authority level of the audience
849
+ #
850
+ # Parameters are described here.
851
+ # https://developers.line.biz/en/reference/messaging-api/#change-authority-level
852
+ #
853
+ # @param authority_level [String] value must be `PUBLIC` or `PRIVATE`
854
+ #
855
+ # @return [Net::HTTPResponse]
856
+ def update_audience_authority_level(authority_level)
857
+ channel_token_required
858
+
859
+ endpoint_path = "/bot/audienceGroup/authorityLevel"
860
+ body = {authorityLevel: authority_level}
861
+ put(endpoint, endpoint_path, body.to_json, credentials)
862
+ end
863
+
600
864
  # Fetch data, get content of specified URL.
601
865
  #
602
866
  # @param endpoint_base [String]
@@ -605,7 +869,7 @@ module Line
605
869
  #
606
870
  # @return [Net::HTTPResponse]
607
871
  def get(endpoint_base, endpoint_path, headers = {})
608
- headers = Line::Bot::API::DEFAULT_HEADERS.merge(headers)
872
+ headers = API::DEFAULT_HEADERS.merge(headers)
609
873
  httpclient.get(endpoint_base + endpoint_path, headers)
610
874
  end
611
875
 
@@ -618,10 +882,23 @@ module Line
618
882
  #
619
883
  # @return [Net::HTTPResponse]
620
884
  def post(endpoint_base, endpoint_path, payload = nil, headers = {})
621
- headers = Line::Bot::API::DEFAULT_HEADERS.merge(headers)
885
+ headers = API::DEFAULT_HEADERS.merge(headers)
622
886
  httpclient.post(endpoint_base + endpoint_path, payload, headers)
623
887
  end
624
888
 
889
+ # Put data, get content of specified URL.
890
+ #
891
+ # @param endpoint_base [String]
892
+ # @param endpoint_path [String]
893
+ # @param payload [String or NilClass]
894
+ # @param headers [Hash]
895
+ #
896
+ # @return [Net::HTTPResponse]
897
+ def put(endpoint_base, endpoint_path, payload = nil, headers = {})
898
+ headers = API::DEFAULT_HEADERS.merge(headers)
899
+ httpclient.put(endpoint_base + endpoint_path, payload, headers)
900
+ end
901
+
625
902
  # Delete content of specified URL.
626
903
  #
627
904
  # @param endpoint_base [String]
@@ -630,7 +907,7 @@ module Line
630
907
  #
631
908
  # @return [Net::HTTPResponse]
632
909
  def delete(endpoint_base, endpoint_path, headers = {})
633
- headers = Line::Bot::API::DEFAULT_HEADERS.merge(headers)
910
+ headers = API::DEFAULT_HEADERS.merge(headers)
634
911
  httpclient.delete(endpoint_base + endpoint_path, headers)
635
912
  end
636
913
 
@@ -644,10 +921,10 @@ module Line
644
921
 
645
922
  json['events'].map do |item|
646
923
  begin
647
- klass = Line::Bot::Event.const_get(Line::Bot::Util.camelize(item['type']))
924
+ klass = Event.const_get(Util.camelize(item['type']))
648
925
  klass.new(item)
649
926
  rescue NameError
650
- Line::Bot::Event::Base.new(item)
927
+ Event::Base.new(item)
651
928
  end
652
929
  end
653
930
  end
@@ -691,6 +968,21 @@ module Line
691
968
  res == 0
692
969
  end
693
970
 
971
+ def content_type(file)
972
+ if file.respond_to?(:content_type)
973
+ content_type = file.content_type
974
+ raise ArgumentError, "invalid content type: #{content_type}" unless ['image/jpeg', 'image/png'].include?(content_type)
975
+ content_type
976
+ else
977
+ case file.path
978
+ when /\.jpe?g\z/i then 'image/jpeg'
979
+ when /\.png\z/i then 'image/png'
980
+ else
981
+ raise ArgumentError, "invalid file extension: #{file.path}"
982
+ end
983
+ end
984
+ end
985
+
694
986
  def channel_token_required
695
987
  raise ArgumentError, '`channel_token` is not configured' unless channel_token
696
988
  end
@@ -21,6 +21,8 @@ require 'line/bot/event/leave'
21
21
  require 'line/bot/event/message'
22
22
  require 'line/bot/event/postback'
23
23
  require 'line/bot/event/unfollow'
24
+ require 'line/bot/event/unsend'
24
25
  require 'line/bot/event/member_joined'
25
26
  require 'line/bot/event/member_left'
26
27
  require 'line/bot/event/things'
28
+ require 'line/bot/event/video_play_complete'
@@ -31,9 +31,9 @@ module Line
31
31
  # https://developers.line.biz/en/reference/messaging-api/#message-event
32
32
  class Message < Base
33
33
  def type
34
- Line::Bot::Event::MessageType.const_get(@src['message']['type'].capitalize)
34
+ MessageType.const_get(@src['message']['type'].capitalize)
35
35
  rescue NameError => e
36
- Line::Bot::Event::MessageType::Unsupport
36
+ MessageType::Unsupport
37
37
  end
38
38
 
39
39
  def message
@@ -29,9 +29,9 @@ module Line
29
29
  # * https://developers.line.biz/en/reference/messaging-api/#scenario-result-event
30
30
  class Things < Base
31
31
  def type
32
- Line::Bot::Event::ThingsType.const_get(Line::Bot::Util.camelize(@src['things']['type']))
32
+ ThingsType.const_get(Util.camelize(@src['things']['type']))
33
33
  rescue NameError
34
- Line::Bot::Event::ThingsType::Unsupport
34
+ ThingsType::Unsupport
35
35
  end
36
36
 
37
37
  def device_id
@@ -0,0 +1,27 @@
1
+ # Copyright 2016 LINE
2
+ #
3
+ # LINE Corporation licenses this file to you under the Apache License,
4
+ # version 2.0 (the "License"); you may not use this file except in compliance
5
+ # with the License. You may obtain a copy of the License at:
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
+ # License for the specific language governing permissions and limitations
13
+ # under the License.
14
+
15
+ module Line
16
+ module Bot
17
+ module Event
18
+ # Event object for when the user unsends a message in a group or room.
19
+ #
20
+ # No replyToken is generated for this event.
21
+ #
22
+ # https://developers.line.biz/en/reference/messaging-api/#unsend-event
23
+ class Unsend < Base
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ # Copyright 2016 LINE
2
+ #
3
+ # LINE Corporation licenses this file to you under the Apache License,
4
+ # version 2.0 (the "License"); you may not use this file except in compliance
5
+ # with the License. You may obtain a copy of the License at:
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
+ # License for the specific language governing permissions and limitations
13
+ # under the License.
14
+
15
+ module Line
16
+ module Bot
17
+ module Event
18
+ # Event for when a user finishes viewing a video at least once with the specified trackingId sent by the LINE Official Account.
19
+ #
20
+ # https://developers.line.biz/en/reference/messaging-api/#video-viewing-complete
21
+ class VideoPlayComplete < Base
22
+ end
23
+ end
24
+ end
25
+ end
@@ -57,6 +57,11 @@ module Line
57
57
  http(uri).post(uri.request_uri, payload, header)
58
58
  end
59
59
 
60
+ def put(url, payload, header = {})
61
+ uri = URI(url)
62
+ http(uri).put(uri.request_uri, payload, header)
63
+ end
64
+
60
65
  def delete(url, header = {})
61
66
  uri = URI(url)
62
67
  http(uri).delete(uri.request_uri, header)
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "addressable", "~> 2.3"
23
23
  spec.add_development_dependency "bundler", "~> 1.11" if RUBY_VERSION < "2.3"
24
- spec.add_development_dependency 'rake', "~> 10.4"
24
+ spec.add_development_dependency 'rake', "~> 13.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
26
- spec.add_development_dependency "webmock", "~> 1.24"
26
+ spec.add_development_dependency "webmock", "~> 3.8"
27
27
  end
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.14.0
4
+ version: 1.18.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-03-02 00:00:00.000000000 Z
11
+ date: 2021-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.4'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.4'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.24'
61
+ version: '3.8'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.24'
68
+ version: '3.8'
69
69
  description: Line::Bot::API - SDK of the LINE Messaging API for Ruby
70
70
  email:
71
71
  - kimoto@linecorp.com
@@ -97,6 +97,8 @@ files:
97
97
  - lib/line/bot/event/postback.rb
98
98
  - lib/line/bot/event/things.rb
99
99
  - lib/line/bot/event/unfollow.rb
100
+ - lib/line/bot/event/unsend.rb
101
+ - lib/line/bot/event/video_play_complete.rb
100
102
  - lib/line/bot/httpclient.rb
101
103
  - lib/line/bot/util.rb
102
104
  - line-bot-api.gemspec
@@ -119,8 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
121
  - !ruby/object:Gem::Version
120
122
  version: '0'
121
123
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.7.6
124
+ rubygems_version: 3.1.2
124
125
  signing_key:
125
126
  specification_version: 4
126
127
  summary: SDK of the LINE Messaging API