viberroo 0.0.6 → 0.0.7

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: 3b3fbdfaffed81b9a4dc8b9fa41575299377bdb181c06beabe27efdd85b63b5f
4
- data.tar.gz: a0273e3dcd59f1c437fe6ffbec611ffca1a4f30ac46aa3f5dc8849e92c12a458
3
+ metadata.gz: ffd5dd8c29342acd993ed001e8957b006e7e74e82ee7f64f887b9fe7dd4cb42c
4
+ data.tar.gz: f1febbae3bf056dd257c726f794f1124efc3f20ac41014dbddb95ade90408d54
5
5
  SHA512:
6
- metadata.gz: da20594f2af9b415658e39fd4707744b8dc18b64158a75a790249fc6e663054dc5224eaed87728a1f9dd8050e48120bde6e7f00f3f5e0b7a82bf1e51910e9a6d
7
- data.tar.gz: be4bc36bbce5681a9c32bd3fa0cfb13fd3753a10ae812f2124d701f64679782639d5934ce7b09719459ec6c2a6700ac94022bc979565b5c268d42f12ecf1b946
6
+ metadata.gz: 1e9ffcebd82b968bb287484553170dbce430b036c9580fedec698540ab63738bb1c5b187d46765c5f5e96ab1b39151efaffcdb4625050157c9d429f1085944ab
7
+ data.tar.gz: cc2ca4deb311c1cce8b294f4fdcb3be3c4e67b2ce3a7818ca2afb6b9847764d51a8c7df6c3b5c3c6915a31712f884cd44a5326488c8c1faeef2d03f2a3b757da
data/lib/viberroo.rb CHANGED
@@ -1,12 +1,11 @@
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.6'
10
+ API_URL = 'https://chatapi.viber.com/pa'.freeze
12
11
  end
@@ -5,12 +5,12 @@ module Viberroo
5
5
  def initialize(token:, response: {})
6
6
  @webhook_url = "#{API_URL}/set_webhook"
7
7
  @message_url = "#{API_URL}/send_message"
8
- @header = { 'X-Viber-Auth-Token': token }
8
+ @headers = { 'X-Viber-Auth-Token': token, 'Content-Type': 'application/json' }
9
9
  @response = response
10
10
  end
11
11
 
12
12
  def set_webhook(params)
13
- Faraday.post(@webhook_url, params.to_json, @header)
13
+ Faraday.post(@webhook_url, params.to_json, @headers)
14
14
  end
15
15
  end
16
16
  end
@@ -15,6 +15,12 @@ module Viberroo
15
15
  }.merge(params)
16
16
  end
17
17
 
18
+ def self.share_phone(params = {})
19
+ { ActionType: 'share-phone',
20
+ min_api_version: 3
21
+ }.merge(params)
22
+ end
23
+
18
24
  def self.none(params = {})
19
25
  { ActionType: 'none' }.merge(params)
20
26
  end
@@ -0,0 +1,65 @@
1
+ module Viberroo
2
+ module Message
3
+ # TODO: add list of params that is mandatory for particular message type,
4
+ # throw exceptions and log errors if not found
5
+
6
+ # required params = text
7
+ def send_message(params = {})
8
+ dispatch({ type: :text }.merge(params))
9
+ end
10
+
11
+ def send_rich_media(params = {})
12
+ dispatch({ type: :rich_media, min_api_version: 2 }.merge(params))
13
+ end
14
+
15
+ # required params = location.lat, location.lon
16
+ def send_location(params = {})
17
+ dispatch({ type: :location, min_api_version: 3 }.merge(params))
18
+ end
19
+
20
+ # required params = text, media
21
+ def send_picture(params = {})
22
+ dispatch({ type: :picture }.merge(params))
23
+ end
24
+
25
+ # required params = text, media
26
+ def send_video(params = {})
27
+ dispatch({ type: :video }.merge(params))
28
+ end
29
+
30
+ # required params = media, size, file_name
31
+ def send_file(params = {})
32
+ dispatch({ type: :file }.merge(params))
33
+ end
34
+
35
+ # required params = contact, contact.name, contact.phone_number
36
+ def send_contact(params = {})
37
+ dispatch({ type: :contact }.merge(params))
38
+ end
39
+
40
+ # required params = media
41
+ def send_url(params = {})
42
+ dispatch({ type: :url }.merge(params))
43
+ end
44
+
45
+ # required params = sticker_id
46
+ # https://viber.github.io/docs/tools/sticker-ids/
47
+ def send_sticker(params = {})
48
+ dispatch({ type: :sticker }.merge(params))
49
+ end
50
+
51
+ private
52
+
53
+ def dispatch(params)
54
+ Faraday.post(
55
+ @message_url,
56
+ normalize({ receiver: @response.user_id }.merge(params)),
57
+ @headers
58
+ )
59
+ end
60
+
61
+ def normalize(params)
62
+ params.delete_if { |_, v| v.nil? }.to_json
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,26 @@
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
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module Viberroo
2
+ VERSION = '0.0.7'.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.6
4
+ version: 0.0.7
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
data/lib/message.rb DELETED
@@ -1,46 +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: user_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
-
37
- def user_id
38
- case @response.event
39
- when 'message'
40
- @response.sender.id
41
- when 'conversation_started'
42
- @response.user.id
43
- end
44
- end
45
- end
46
- end
data/lib/response.rb DELETED
@@ -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