viberroo 0.1.0 → 0.2.2

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: c30b02222199f1c17401145ec5684fe268cfe927466075d599c6b92740a5fd27
4
- data.tar.gz: c929a33404dda4194f6d6b4cf4d05e8f9d70c8069c6ba5e56ff7ddf7b01a8249
3
+ metadata.gz: f382a40dcde3858d3fec54b00754e6d5fac1f8b103b4fad83cc0b8794809f584
4
+ data.tar.gz: 43aa2d14d95200e451dbf9c4b601555266f4651a5390475525aff951fd7a78f3
5
5
  SHA512:
6
- metadata.gz: d9d732ef550ec85681e0f3b22ba408d3c531bba37c518d862dff6c8abc82c973e55e84d0dc2844cadfc5223186ef9bb0b018ced6b6ddf65c54c8cafb94922f90
7
- data.tar.gz: 49cdbc99c87e1178c7e020d4ba9c755a5401fbd798d244b9bf2649eae4d5867fa353c621285b3e7f1f17886cf54095474b3c77d5b1f11d377af5bd7bedbee376
6
+ metadata.gz: 52ca07c022c33dbbddde9cba3ae26d1ca0daa9ee530611e6ebdf3b392caef9a3ab94aa63e2b805a33295a3311443907524abd32b81bf278a755e9509c6d8d95c
7
+ data.tar.gz: f799269c2b83b105167a59503bd711a27774bfdc0e2aab0bec8e1dc274fe5f3ca9bd5dbd67461d47139752318083485d56e9080bfdbd89493a289dafad2abd7d
@@ -1,10 +1,11 @@
1
1
  require 'json'
2
2
  require 'faraday'
3
+ require 'viberroo/configuration'
3
4
  require 'viberroo/message'
4
- require 'viberroo/bot'
5
5
  require 'viberroo/input'
6
- require 'viberroo/response'
6
+ require 'viberroo/callback'
7
7
  require 'viberroo/bot'
8
+ require 'logger'
8
9
 
9
10
  module Viberroo
10
11
  module URL
@@ -1,55 +1,95 @@
1
1
  module Viberroo
2
2
  class Bot
3
- def initialize(token:, response: {})
4
- @headers = { 'X-Viber-Auth-Token': token, 'Content-Type': 'application/json' }
5
- @response = response
3
+ def initialize(token: nil, callback: nil)
4
+ Viberroo.configure
5
+
6
+ @headers = {
7
+ 'X-Viber-Auth-Token': token || Viberroo.config.auth_token,
8
+ 'Content-Type': 'application/json'
9
+ }
10
+ @callback = callback
6
11
  end
7
12
 
8
13
  def set_webhook(url:, event_types: nil, send_name: nil, send_photo: nil)
9
- request(
10
- URL::WEBHOOK,
11
- url: url,
12
- event_types: event_types,
13
- send_name: send_name,
14
- send_photo: send_photo
15
- )
14
+ request(URL::WEBHOOK, url: url, event_types: event_types,
15
+ send_name: send_name, send_photo: send_photo)
16
+ end
17
+
18
+ def set_webhook!(url:, event_types: nil, send_name: nil, send_photo: nil)
19
+ parse set_webhook(url: url, event_types: event_types,
20
+ send_name: send_name, send_photo: send_photo)
16
21
  end
17
22
 
18
23
  def remove_webhook
19
24
  request(URL::WEBHOOK, url: '')
20
25
  end
21
26
 
27
+ def remove_webhook!
28
+ parse remove_webhook
29
+ end
30
+
22
31
  def send(message:, keyboard: {})
23
- request(
24
- URL::MESSAGE,
25
- { receiver: @response.user_id }.merge(message).merge(keyboard)
26
- )
32
+ request(URL::MESSAGE,
33
+ { receiver: @callback&.user_id }.merge(message).merge(keyboard))
34
+ end
35
+
36
+ def send!(message:, keyboard: {})
37
+ parse self.send(message: message, keyboard: keyboard)
27
38
  end
28
39
 
29
40
  def broadcast(message:, to:)
30
41
  request(URL::BROADCAST_MESSAGE, message.merge(broadcast_list: to))
31
42
  end
32
43
 
44
+ def broadcast!(message:, to:)
45
+ parse broadcast(message: message, to: to)
46
+ end
47
+
33
48
  def get_account_info
34
49
  request(URL::GET_ACCOUNT_INFO)
35
50
  end
36
51
 
52
+ def get_account_info!
53
+ parse get_account_info
54
+ end
55
+
37
56
  def get_user_details(id:)
38
57
  request(URL::GET_USER_DETAILS, id: id)
39
58
  end
40
59
 
60
+ def get_user_details!(id:)
61
+ parse get_user_details(id: id)
62
+ end
63
+
41
64
  def get_online(ids:)
42
65
  request(URL::GET_ONLINE, ids: ids)
43
66
  end
44
67
 
68
+ def get_online!(ids:)
69
+ parse get_online(ids: ids)
70
+ end
71
+
45
72
  private
46
73
 
47
74
  def request(url, params = {})
48
- Faraday.post(url, compact(params).to_json, @headers)
75
+ response = Faraday.post(url, compact(params).to_json, @headers)
76
+
77
+ Viberroo.config.logger&.info("##{caller_name} -- #{response.body}")
78
+
79
+ Viberroo.config.parse_response_body ? JSON.parse(response.body) : response
80
+ end
81
+
82
+ def parse(request)
83
+ warn 'DEPRECATION WARNING: Viberroo::Bot bang methods will be dropped on next minor release. Use Viberroo.config.parse_response_body.'
84
+ JSON.parse(request.body)
49
85
  end
50
86
 
51
87
  def compact(params)
52
88
  params.delete_if { |_, v| v.nil? }
53
89
  end
90
+
91
+ def caller_name
92
+ caller[1][/`.*'/][1..-2]
93
+ end
54
94
  end
55
95
  end
@@ -0,0 +1,24 @@
1
+ require 'recursive-open-struct'
2
+
3
+ module Viberroo
4
+ class Callback
5
+ attr_reader :params
6
+
7
+ def initialize(params)
8
+ @params = RecursiveOpenStruct.new params.to_h
9
+ end
10
+
11
+ def user_id
12
+ case @params.event
13
+ when 'conversation_started', 'subscribed'
14
+ @params.user.id
15
+ when 'unsubscribed', 'delivered', 'seen', 'failed'
16
+ @params.user_id
17
+ when 'message'
18
+ @params.sender.id
19
+ else
20
+ @params.dig(:user, :id)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ module Viberroo
2
+ class << self
3
+ attr_accessor :config
4
+ end
5
+
6
+ def self.configure
7
+ self.config ||= Configuration.new
8
+ yield(config) if block_given?
9
+ end
10
+
11
+ class Configuration
12
+ attr_accessor :logger, :auth_token, :parse_response_body
13
+
14
+ def initialize
15
+ @auth_token = nil
16
+
17
+ @logger = Logger.new(STDOUT)
18
+ @logger.formatter = proc do |severity, datetime, _, msg|
19
+ "[#{datetime}] #{severity} Viberroo::Bot #{msg}\n"
20
+ end
21
+
22
+ @parse_response_body = true
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module Viberroo
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viberroo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Viktor Habchak
@@ -46,9 +46,10 @@ extra_rdoc_files: []
46
46
  files:
47
47
  - lib/viberroo.rb
48
48
  - lib/viberroo/bot.rb
49
+ - lib/viberroo/callback.rb
50
+ - lib/viberroo/configuration.rb
49
51
  - lib/viberroo/input.rb
50
52
  - lib/viberroo/message.rb
51
- - lib/viberroo/response.rb
52
53
  - lib/viberroo/version.rb
53
54
  homepage: https://github.com/vikdotdev/viberroo
54
55
  licenses:
@@ -60,16 +61,16 @@ require_paths:
60
61
  - lib
61
62
  required_ruby_version: !ruby/object:Gem::Requirement
62
63
  requirements:
63
- - - ">="
64
+ - - "~>"
64
65
  - !ruby/object:Gem::Version
65
- version: '0'
66
+ version: '2.3'
66
67
  required_rubygems_version: !ruby/object:Gem::Requirement
67
68
  requirements:
68
69
  - - ">="
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  requirements: []
72
- rubygems_version: 3.1.2
73
+ rubygems_version: 3.0.3
73
74
  signing_key:
74
75
  specification_version: 4
75
76
  summary: Viber bot for Ruby.
@@ -1,28 +0,0 @@
1
- require 'recursive-open-struct'
2
-
3
- module Viberroo
4
- class Response
5
- class << self
6
- def init(params)
7
- @@os = RecursiveOpenStruct.new params.to_h
8
- @@os.user_id = user_id
9
- @@os
10
- end
11
-
12
- private
13
-
14
- def user_id
15
- case @@os.event
16
- when 'conversation_started', 'subscribed'
17
- @@os.user.id
18
- when 'unsubscribed', 'delivered', 'seen', 'failed'
19
- @@os.user_id
20
- when 'message'
21
- @@os.sender.id
22
- else
23
- @@os.dig(:user, :id)
24
- end
25
- end
26
- end
27
- end
28
- end