class Moogle::Commands::PushWebhookPing
Posts a webhook callback.
Public Instance Methods
call()
click to toggle source
# File lib/moogle/commands/push_webhook_ping.rb, line 20 def call # Options pulled from the delegated object ssl_opt = opts :ssl_opt webhook_uri = Addressable::URI.parse request.webhook_uri secret = request.secret # Build request and make it. conn = Faraday.new url: webhook_uri.origin, ssl: ssl_opt do |b| # Signs the post body, adds 'sig' to query parameters. b.use Rafaday::BodySigningMiddleware, secret: secret if secret b.response :raise_error b.adapter :net_http end results = conn.post webhook_uri.path, request.data # Checks for errors that didn't get caught in the response :raise_error. case results.status when 200..299 else raise "PushWebhookPing (#{request.uuid}) failed: #{results.status}" end event_class = opts :event_class, Moogle::Events::WebhookPingPushed return event_class.new( request.create_child_uuids.merge( message_origin: request.message_origin, target_id: request.target_id, webhook_uri: request.webhook_uri)) rescue => e e.extend Moogle::Error raise e end