viberroo 0.1.0 → 0.2.2

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