viberroo 0.0.5 → 0.1.0

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: 2cebd3e06a1ca43aba98a10a30d3430d637112c62b0781b97372fcbedd6cc9b8
4
- data.tar.gz: 114cc6bcc5a36662ba0f0b433be94b83d08d54edbb76c34dca59303f5f813bd7
3
+ metadata.gz: c30b02222199f1c17401145ec5684fe268cfe927466075d599c6b92740a5fd27
4
+ data.tar.gz: c929a33404dda4194f6d6b4cf4d05e8f9d70c8069c6ba5e56ff7ddf7b01a8249
5
5
  SHA512:
6
- metadata.gz: 51d80573eb12d713dd566dbb27383348941b4a2223c33b89abde8dd1dcf55700e2271831db70393c6bc5fe92a7efd97b2b655bcc4112bb4eb56ece4abfa6720c
7
- data.tar.gz: efb26e8193d190e75d9c1b6b0488081a402ccb1536d2d452010ecc1fa18d884e9a6ab6a5784be7aa1d6c14bfcac009d83b7eef9bdc5a7f5396a9a5540b57c3ce
6
+ metadata.gz: d9d732ef550ec85681e0f3b22ba408d3c531bba37c518d862dff6c8abc82c973e55e84d0dc2844cadfc5223186ef9bb0b018ced6b6ddf65c54c8cafb94922f90
7
+ data.tar.gz: 49cdbc99c87e1178c7e020d4ba9c755a5401fbd798d244b9bf2649eae4d5867fa353c621285b3e7f1f17886cf54095474b3c77d5b1f11d377af5bd7bedbee376
@@ -1,12 +1,19 @@
1
1
  require 'json'
2
2
  require 'faraday'
3
- require 'message'
4
- require 'bot'
5
- require 'input'
6
- require 'response'
7
- require 'bot'
3
+ require 'viberroo/message'
4
+ require 'viberroo/bot'
5
+ require 'viberroo/input'
6
+ require 'viberroo/response'
7
+ require 'viberroo/bot'
8
8
 
9
9
  module Viberroo
10
- API_URL = 'https://chatapi.viber.com/pa'
11
- VERSION = '0.0.5'
10
+ module URL
11
+ API = 'https://chatapi.viber.com/pa'.freeze
12
+ WEBHOOK = "#{API}/set_webhook".freeze
13
+ MESSAGE = "#{API}/send_message".freeze
14
+ BROADCAST_MESSAGE = "#{API}/broadcast_message".freeze
15
+ GET_ACCOUNT_INFO = "#{API}/get_account_info".freeze
16
+ GET_USER_DETAILS = "#{API}/get_user_details".freeze
17
+ GET_ONLINE = "#{API}/get_online".freeze
18
+ end
12
19
  end
@@ -0,0 +1,55 @@
1
+ module Viberroo
2
+ class Bot
3
+ def initialize(token:, response: {})
4
+ @headers = { 'X-Viber-Auth-Token': token, 'Content-Type': 'application/json' }
5
+ @response = response
6
+ end
7
+
8
+ 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
+ )
16
+ end
17
+
18
+ def remove_webhook
19
+ request(URL::WEBHOOK, url: '')
20
+ end
21
+
22
+ def send(message:, keyboard: {})
23
+ request(
24
+ URL::MESSAGE,
25
+ { receiver: @response.user_id }.merge(message).merge(keyboard)
26
+ )
27
+ end
28
+
29
+ def broadcast(message:, to:)
30
+ request(URL::BROADCAST_MESSAGE, message.merge(broadcast_list: to))
31
+ end
32
+
33
+ def get_account_info
34
+ request(URL::GET_ACCOUNT_INFO)
35
+ end
36
+
37
+ def get_user_details(id:)
38
+ request(URL::GET_USER_DETAILS, id: id)
39
+ end
40
+
41
+ def get_online(ids:)
42
+ request(URL::GET_ONLINE, ids: ids)
43
+ end
44
+
45
+ private
46
+
47
+ def request(url, params = {})
48
+ Faraday.post(url, compact(params).to_json, @headers)
49
+ end
50
+
51
+ def compact(params)
52
+ params.delete_if { |_, v| v.nil? }
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,31 @@
1
+ module Viberroo
2
+ class Input
3
+ def self.keyboard(params)
4
+ { keyboard: { Type: 'keyboard' }.merge(params) }
5
+ end
6
+
7
+ def self.reply_button(params)
8
+ { ActionType: 'reply' }.merge(params)
9
+ end
10
+
11
+ def self.url_button(params)
12
+ { ActionType: 'open-url' }.merge(params)
13
+ end
14
+
15
+ def self.location_picker_button(params)
16
+ { ActionType: 'location-picker',
17
+ min_api_version: 3
18
+ }.merge(params)
19
+ end
20
+
21
+ def self.share_phone_button(params)
22
+ { ActionType: 'share-phone',
23
+ min_api_version: 3
24
+ }.merge(params)
25
+ end
26
+
27
+ def self.none_button(params = {})
28
+ { ActionType: 'none' }.merge(params)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,39 @@
1
+ module Viberroo
2
+ class Message
3
+ def self.plain(params)
4
+ { type: :text }.merge(params)
5
+ end
6
+
7
+ def self.rich(params)
8
+ { type: :rich_media, min_api_version: 2 }.merge(params)
9
+ end
10
+
11
+ def self.location(params)
12
+ { type: :location }.merge(params)
13
+ end
14
+
15
+ def self.picture(params = {})
16
+ { type: :picture, text: '' }.merge(params)
17
+ end
18
+
19
+ def self.video(params = {})
20
+ { type: :video }.merge(params)
21
+ end
22
+
23
+ def self.file(params = {})
24
+ { type: :file }.merge(params)
25
+ end
26
+
27
+ def self.contact(params = {})
28
+ { type: :contact }.merge(params)
29
+ end
30
+
31
+ def self.url(params = {})
32
+ { type: :url }.merge(params)
33
+ end
34
+
35
+ def self.sticker(params = {})
36
+ { type: :sticker }.merge(params)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,3 @@
1
+ module Viberroo
2
+ VERSION = '0.1.0'.freeze
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.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Viktor Habchak
@@ -44,11 +44,12 @@ executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
- - lib/bot.rb
48
- - lib/input.rb
49
- - lib/message.rb
50
- - lib/response.rb
51
47
  - lib/viberroo.rb
48
+ - lib/viberroo/bot.rb
49
+ - lib/viberroo/input.rb
50
+ - lib/viberroo/message.rb
51
+ - lib/viberroo/response.rb
52
+ - lib/viberroo/version.rb
52
53
  homepage: https://github.com/vikdotdev/viberroo
53
54
  licenses:
54
55
  - MIT
@@ -71,5 +72,5 @@ requirements: []
71
72
  rubygems_version: 3.1.2
72
73
  signing_key:
73
74
  specification_version: 4
74
- summary: Thin Viber REST API wrapper for ruby.
75
+ summary: Viber bot for Ruby.
75
76
  test_files: []
data/lib/bot.rb DELETED
@@ -1,16 +0,0 @@
1
- module Viberroo
2
- class Bot
3
- include Message
4
-
5
- def initialize(token:, response: {})
6
- @webhook_url = "#{API_URL}/set_webhook"
7
- @message_url = "#{API_URL}/send_message"
8
- @header = { 'X-Viber-Auth-Token': token }
9
- @response = response
10
- end
11
-
12
- def set_webhook(params)
13
- Faraday.post(@webhook_url, params.to_json, @header)
14
- end
15
- end
16
- end
@@ -1,27 +0,0 @@
1
- module Viberroo
2
- module Input
3
- class Button
4
- def self.reply(params = {})
5
- { ActionType: 'reply' }.merge(params)
6
- end
7
-
8
- def self.url(params = {})
9
- { ActionType: 'open-url' }.merge(params)
10
- end
11
-
12
- def self.location_picker(params = {})
13
- { ActionType: 'location-picker',
14
- min_api_version: 3
15
- }.merge(params)
16
- end
17
-
18
- def self.none(params = {})
19
- { ActionType: 'none' }.merge(params)
20
- end
21
- end
22
-
23
- def keyboard(params = {})
24
- { Type: 'keyboard' }.merge(params)
25
- end
26
- end
27
- end
@@ -1,37 +0,0 @@
1
- module Viberroo
2
- module Message
3
- def send_message(params = {})
4
- dispatch({
5
- type: :text
6
- }.merge(params))
7
- end
8
-
9
- def send_rich_media(params = {})
10
- dispatch({
11
- type: :rich_media,
12
- min_api_version: 2
13
- }.merge(params))
14
- end
15
-
16
- def send_location(params = {})
17
- dispatch({
18
- type: :location,
19
- min_api_version: 3
20
- }.merge(params))
21
- end
22
-
23
- private
24
-
25
- def dispatch(params)
26
- Faraday.post(
27
- @message_url,
28
- normalize({ receiver: @response.sender.id }.merge(params)),
29
- @header
30
- )
31
- end
32
-
33
- def normalize(params)
34
- params.delete_if { |_, v| v.nil? }.to_json
35
- end
36
- end
37
- end
@@ -1,9 +0,0 @@
1
- require 'recursive-open-struct'
2
-
3
- module Viberroo
4
- class Response
5
- def self.init(params)
6
- RecursiveOpenStruct.new params.to_h
7
- end
8
- end
9
- end