bobot 3.0.7 → 3.5.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
  SHA1:
3
- metadata.gz: 4b049008070aae88b76717e5d73e2d26a761cc41
4
- data.tar.gz: 7934bbe21c9a742d30c03ea6dff7e115854a9a04
3
+ metadata.gz: a5b25b546109e860f892b4500d1361a1e1257607
4
+ data.tar.gz: 3128aa03dd6a6823f5de3d12ae84a053bfcc3512
5
5
  SHA512:
6
- metadata.gz: 8210786c2b553d7b9aa4c59903d649c42b42a89c0916831fb3076c6d432f4f53d92fbf0e6b1b6a520987ac596b0236b32bf2788a1b1c1a9a8e270762260b4608
7
- data.tar.gz: 9c51a7fa9f562f23e18536566ed16a23f2dc4d9f55ad45dfb6d1346fd4e4a7ba37b729c8bd43633dce4ab3dddd1e875d0cc9204ac242e0033b19bd2439e87336
6
+ metadata.gz: 1c47070ab60590fe1b2903d361fde6ed675fa5daddee567396bc4b9985d04f6dff446e7204c988664c68b86d1d5a0fc847ffd615d480f1c5233b26d442ae6da7
7
+ data.tar.gz: 068e5a8226ba52fb45242c671cb268cb08f67f3c498a6323590cd560e21e00208e6a41ea31783dcaed0eda934ced1dcc7ee87f5f69e42af457a5a05170d67523
@@ -29,8 +29,8 @@ module Bobot
29
29
 
30
30
  def receive
31
31
  check_integrity
32
- return_json = trigger(parsed_body)
33
- render plain: ActiveSupport::JSON.encode(return_json), status: :ok
32
+ trigger(parsed_body)
33
+ head :ok
34
34
  rescue BadRequestError => error
35
35
  render plain: error.message, status: :ok
36
36
  end
@@ -24,37 +24,26 @@ module Bobot
24
24
  end
25
25
 
26
26
  def on(event, &block)
27
- unless EVENTS.include? event
28
- raise Error.new("#{event} is not a valid event; available events are #{EVENTS.join(',')}")
27
+ if EVENTS.include? event
28
+ hooks[event] = block
29
+ else
30
+ warn "[bobot trigger] Ignoring #{event.class} (not available in [#{EVENTS.join(', ')}])"
29
31
  end
30
- hooks[event] = block
31
32
  end
32
33
 
33
34
  def receive(payload)
34
- event = Bobot::Event.parse(payload)
35
- hooks.fetch(Bobot::Event::EVENTS.invert[event.class].to_sym)
36
- Rails.logger.debug "[ActiveJob] << Bobot::HookJob with event #{event.class}"
37
- # event.mark_as_seen
38
- job = Bobot::CommanderJob
39
- if Bobot.config.async
40
- job.perform_later(payload: payload)
41
- else
42
- job.perform_now(payload: payload)
43
- end
44
- rescue KeyError
45
- warn "[receive] Ignoring #{event.class} (no hook registered)"
35
+ Bobot::CommanderJob.send(
36
+ Bobot.config.async ? :perform_later : :perform_now,
37
+ { payload: payload }
38
+ )
46
39
  end
47
40
 
48
41
  def trigger(payload)
49
42
  event = Bobot::Event.parse(payload)
50
43
  hook = hooks.fetch(Bobot::Event::EVENTS.invert[event.class].to_sym)
51
- Rails.logger.debug "[ActiveJob] >> Bobot::HookJob related to event #{name.class}"
52
- # event.show_typing(state: true)
53
44
  hook.call(event)
54
- # event.show_typing(state: false)
55
- event
56
45
  rescue KeyError
57
- warn "[trigger] Ignoring #{event.class} (no hook registered)"
46
+ warn "[bobot trigger] Ignoring #{event.class} (no hook registered)"
58
47
  end
59
48
 
60
49
  def hooks
@@ -9,15 +9,12 @@ module Bobot
9
9
  module ClassMethods
10
10
  def graph_get(path, query: {})
11
11
  url = "#{GRAPH_FB_URL}#{path}".freeze
12
- req = ::Typhoeus::Request.new(
12
+ response = ::Typhoeus::Request.get(
13
13
  url,
14
- method: :get,
15
14
  params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
16
15
  headers: GRAPH_HEADERS,
17
16
  ssl_verifypeer: false,
18
- verbose: false,
19
17
  )
20
- response = req.run
21
18
  json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
22
19
  Rails.logger.debug "[GET] >> #{url}"
23
20
  Rails.logger.debug "[GET] << #{json}"
@@ -28,16 +25,13 @@ module Bobot
28
25
 
29
26
  def graph_post(path, query: {}, body: {})
30
27
  url = "#{GRAPH_FB_URL}#{path}".freeze
31
- req = ::Typhoeus::Request.new(
28
+ response = ::Typhoeus::Request.post(
32
29
  url,
33
- method: :post,
34
30
  params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
35
31
  body: ActiveSupport::JSON.encode(body),
36
32
  headers: GRAPH_HEADERS,
37
33
  ssl_verifypeer: false,
38
- verbose: false,
39
34
  )
40
- response = req.run
41
35
  json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
42
36
  Rails.logger.debug "[POST] >> #{url}"
43
37
  Rails.logger.debug "[POST] << #{json}"
@@ -48,16 +42,13 @@ module Bobot
48
42
 
49
43
  def graph_delete(path, query: {}, body: {})
50
44
  url = "#{GRAPH_FB_URL}#{path}".freeze
51
- req = ::Typhoeus::Request.new(
45
+ response = ::Typhoeus::Request.delete(
52
46
  url,
53
- method: :delete,
54
47
  params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
55
48
  body: ActiveSupport::JSON.encode(body),
56
49
  headers: GRAPH_HEADERS,
57
50
  ssl_verifypeer: false,
58
- verbose: false,
59
51
  )
60
- response = req.run
61
52
  json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
62
53
  Rails.logger.debug "[DELETE] >> #{url}"
63
54
  Rails.logger.debug "[DELETE] << #{json}"
@@ -36,12 +36,14 @@ module Bobot
36
36
 
37
37
  def deliver(payload_template:, to:)
38
38
  raise Bobot::FieldFormat.new('payload_template is required.') unless payload_template.present?
39
- job = Bobot::DeliverJob
40
- if Bobot.config.async
41
- job.perform_later(target_facebook_uid: to, access_token: page_access_token, payload_template: payload_template)
42
- else
43
- job.perform_now(target_facebook_uid: to, access_token: page_access_token, payload_template: payload_template)
44
- end
39
+ Bobot::Commander.deliver(
40
+ body: {
41
+ recipient: { id: to },
42
+ }.merge(payload_template),
43
+ query: {
44
+ access_token: page_access_token,
45
+ },
46
+ )
45
47
  end
46
48
 
47
49
  def sender_action(sender_action:, to: nil)
@@ -1,8 +1,8 @@
1
1
  module Bobot
2
2
  class Version
3
3
  MAJOR = 3
4
- MINOR = 0
5
- PATCH = 7
4
+ MINOR = 5
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.7
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Navid EMAD
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-04 00:00:00.000000000 Z
11
+ date: 2017-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -75,7 +75,6 @@ files:
75
75
  - app/controllers/bobot/webhook_controller.rb
76
76
  - app/jobs/bobot/application_job.rb
77
77
  - app/jobs/bobot/commander_job.rb
78
- - app/jobs/bobot/deliver_job.rb
79
78
  - config/locales/bobot.en.yml
80
79
  - config/routes.rb
81
80
  - lib/bobot.rb
@@ -1,22 +0,0 @@
1
- module Bobot
2
- class DeliverJob < ApplicationJob
3
- queue_as do
4
- if Bobot.config.commander_queue_name.present?
5
- Bobot.config.commander_queue_name
6
- else
7
- :default
8
- end
9
- end
10
-
11
- def perform(target_facebook_uid:, access_token:, payload_template:)
12
- Bobot::Commander.deliver(
13
- body: {
14
- recipient: { id: target_facebook_uid },
15
- }.merge(payload_template),
16
- query: {
17
- access_token: access_token,
18
- },
19
- )
20
- end
21
- end
22
- end