Class: Toot::CallsEventCallback

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
lib/toot/calls_event_callback.rb

Instance Method Summary collapse

Instance Method Details

#perform(callback_url, event_data) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/toot/calls_event_callback.rb', line 7

def perform(callback_url, event_data)
  uri = URI(callback_url)

  logger.info { "Event ID: #{event_data["id"]}" }
  logger.info { "URL: #{callback_url}" }
  logger.debug { "Payload: #{event_data.inspect}" }

  response = Toot.config.http_connection.post do |request|
    request.url uri
    request.body = event_data.to_json
    request.headers["Content-Type"] = "application/json"
  end

  logger.debug { "Response from callback service: #{response.inspect}" }

  if response.success?
    if response.headers["X-Toot-Unsubscribe"]
      logger.info { "Service requested unsubscribe via X-Toot-Unsubscribe header. Unsubscribing." }
      Toot.redis do |r|
        r.srem event_data["channel"], callback_url
      end
    end
  else
    logger.error { "Error response: #{response.inspect}" }
    raise CallbackFailure, "Response code: #{response.status}"
  end
end