lib/wolf_core/application/integrations/routing_operations.rb



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

      PATH_TO_FUNCTION_NAME_MAPPING = {
        'burnett/jobseekers/export' => 'BurnettExportJobseeker',
        'burnett/jobseekers/import' => 'BurnettImportJobseeker',
        'burnett/orders/export' => 'BurnettExportOrder',
        'burnett/order_applications/export' => 'BurnettExportOrderApplication',
        'burnett/clients/import' => 'BurnettImportClient',
        'burnett/clients/bulk_import' => 'BurnettBulkImportClients',
        'burnett/clients/export' => 'BurnettExportClient',
      }

      def route_event_request(path:, body:, environment:, domain_url: nil)
        environment ||= 'development'
        environment = environment.downcase
        deployable_envs = ['production', 'staging', 'testing']
        puts '-------------------------------------------------------'
        puts "environment = #{environment}"
        puts "deployable_envs = #{deployable_envs}"
        puts "deployable_envs.include?(environment) = #{deployable_envs.include?(environment)}"
        puts '-------------------------------------------------------'
        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