lib/wolf_core/application/integrations/routing_operations.rb



module WolfCore
  module Integrations
    module RoutingOperations
      include WolfCore::HttpOperations
      include WolfCore::LambdaFunctionOperations
      include WolfCore::ExceptionOperations

      def route_event_request(path:, body:, environment:, domain_url: nil, path_to_function_name_mapping:)
        environment ||= 'development'
        environment = environment.downcase
        deployable_envs = ['production', 'staging', 'testing']
        if deployable_envs.include?(environment)
          function_name = "#{path_to_function_name_mapping[path]}#{environment.titleize}"
          raise_service_error("Function name not found for path: #{path}") if function_name.blank?

          invoke_lambda(
            function_name: function_name,
            payload: body,
          )
        else
          domain_url ||= ENV['CURRENT_SAM_URL']
          async_http_post(url: "#{domain_url}/#{path}", body: body)
        end
      end
    end
  end
end