Class: FlowcommerceSpree::WebhooksController

Inherits:
ActionController::Base
  • Object
show all
Defined in:
app/controllers/flowcommerce_spree/webhooks_controller.rb

Instance Method Summary collapse

Instance Method Details

#handle_flow_io_eventObject

forward incoming requests to respective Flow Webhooks Service objects /flow/event-target endpoint



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/controllers/flowcommerce_spree/webhooks_controller.rb', line 11

def handle_flow_io_event
  %i[event_id organization discriminator].each_with_object(params) { |key, obj| obj.require(key) }
  return unless organization_valid?

  webhook_result = "FlowcommerceSpree::Webhooks::#{params['discriminator'].classify}".constantize.process(params)
  @result = {}
  @result[:error] = webhook_result.full_messages.join("\n") if webhook_result.errors.any?
rescue StandardError => e
  @result = { error: e.class.to_s, message: e.message, backtrace: e.backtrace }
ensure
  logger.info(@result) if (error = @result[:error])
  render json: @result.except(:backtrace), status: error ? :unprocessable_entity : :ok
end