module Repp module V1 module Registrar class XmlConsoleController < BaseController include EppRequestable THROTTLED_ACTIONS = %i[load_xml].freeze include Shunter::Integration::Throttle PREFS = %w[domain-ee contact-ee eis epp-ee].freeze SCHEMA_VERSIONS = { 'epp-ee' => '1.0', 'eis' => '1.0', 'contact-ee' => '1.1', 'default' => '1.2', }.freeze def load_xml cl_trid = "#{current_user.username}-#{Time.zone.now.to_i}" obj = ActionController::Base.helpers.sanitize(params[:obj]) epp_action = ActionController::Base.helpers.sanitize(params[:epp_action]) xml_dir_path = Rails.root.join('app/views/epp/sample_requests').to_s xml = File.read("#{xml_dir_path}/#{obj}/#{epp_action}.xml") xml = prepare_payload(xml, cl_trid) render_success(data: { xml: xml }) end private def prepare_payload(xml, cl_trid) PREFS.map do |pref| xml = load_schema_by_prefix(pref, xml) end xml.gsub!('ABC-12345', "#{cl_trid}") xml end def load_schema_by_prefix(pref, xml) version = version_by_prefix(pref) xml.gsub!("\"#{pref}\"", "\"#{Xsd::Schema.filename(for_prefix: pref.to_s, for_version: version)}\"") xml end def version_by_prefix(pref) key = SCHEMA_VERSIONS.key?(pref) ? pref : 'default' SCHEMA_VERSIONS[key] end end end end end