Sha256: 382809c7968c20326a81951a4f9676bc81a9ec00845ea1a21bce5bd89e7b920a

Contents?: true

Size: 1.44 KB

Versions: 4

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module DefraRubyMocks
  class WorldpayController < ::DefraRubyMocks::ApplicationController

    before_action :set_default_response_format

    def payments_service
      @values = WorldpayRequestHandlerService.run(convert_request_body_to_xml)

      render_payment_response if @values[:request_type] == :payment
      render_refund_response if @values[:request_type] == :refund
    rescue StandardError => e
      Rails.logger.error("MOCKS: Worldpay payments service error: #{e.message}")
      head 500
    end

    def dispatcher
      @response = WorldpayResponseService.run(
        success_url: params[:successURL],
        failure_url: params[:failureURL],
        pending_url: params[:pendingURL],
        cancel_url: params[:cancelURL],
        error_url: params[:errorURL]
      )

      if @response.status == :STUCK
        render formats: :html, action: "stuck", layout: false
      else
        redirect_to @response.url
      end
    rescue StandardError => e
      Rails.logger.error("MOCKS: Worldpay dispatcher error: #{e.message}")
      head 500
    end

    private

    def set_default_response_format
      request.format = :xml
    end

    def convert_request_body_to_xml
      Nokogiri::XML(request.body.read)
    end

    def render_payment_response
      render "defra_ruby_mocks/worldpay/payment_request"
    end

    def render_refund_response
      render "defra_ruby_mocks/worldpay/refund_request"
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
defra_ruby_mocks-2.2.0 app/controllers/defra_ruby_mocks/worldpay_controller.rb
defra_ruby_mocks-2.1.0 app/controllers/defra_ruby_mocks/worldpay_controller.rb
defra_ruby_mocks-2.0.0 app/controllers/defra_ruby_mocks/worldpay_controller.rb
defra_ruby_mocks-1.5.0 app/controllers/defra_ruby_mocks/worldpay_controller.rb