lib/pact/consumer/mock_service/cors_origin_header_middleware.rb



module Pact
  module Consumer
    class CorsOriginHeaderMiddleware

      def initialize app, cors_enabled
        @app = app
        @cors_enabled = cors_enabled
      end

      def call env
        response = @app.call env
        if env['HTTP_X_PACT_MOCK_SERVICE'] || @cors_enabled
          add_cors_header env, response
        else
          response
        end
      end

      def shutdown
        @app.shutdown
      end

      private

      def add_cors_header env, response
        cors_headers = { 'Access-Control-Allow-Origin' => env.fetch('HTTP_ORIGIN','*'), 'Access-Control-Allow-Credentials' => 'true'}
        [response[0], response[1].merge(cors_headers), response[2]]
      end
    end
  end
end