diff --git a/app/controllers/registrar/domain_transfers_controller.rb b/app/controllers/registrar/domain_transfers_controller.rb index 43d40e70e..cbaa5407c 100644 --- a/app/controllers/registrar/domain_transfers_controller.rb +++ b/app/controllers/registrar/domain_transfers_controller.rb @@ -8,10 +8,45 @@ class Registrar end def create - params[:request] = true # EPP domain:transfer "op" attribute - domain = Depp::Domain.new(current_user: depp_current_user) - @data = domain.transfer(params) - render :new unless response_ok? + if params[:batch_file].present? + csv = CSV.read(params[:batch_file].path, headers: true) + domain_transfers = [] + + csv.each do |row| + domain_name = row['Domain'] + transfer_code = row['Transfer code'] + domain_transfers << { 'domainName' => domain_name, 'transferCode' => transfer_code } + end + + client_cert = File.read(ENV['cert_path']) + client_key = File.read(ENV['key_path']) + + uri = URI.parse("#{ENV['repp_url']}domain_transfers") + request = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json') + request.body = { data: { domainTransfers: domain_transfers } }.to_json + request.basic_auth(current_user.username, current_user.password) + + response = Net::HTTP.start(uri.hostname, uri.port, + use_ssl: (uri.scheme == 'https'), + verify_mode: OpenSSL::SSL::VERIFY_NONE, + cert: OpenSSL::X509::Certificate.new(client_cert), + key: OpenSSL::PKey::RSA.new(client_key)) do |http| + http.request(request) + end + + if response.code == '204' + flash[:notice] = t '.transferred' + redirect_to registrar_domains_url + else + @api_errors = JSON.parse(response.body, symbolize_names: true)[:errors] + render :new + end + else + params[:request] = true # EPP domain:transfer "op" attribute + domain = Depp::Domain.new(current_user: depp_current_user) + @data = domain.transfer(params) + render :new unless response_ok? + end end end end diff --git a/app/views/registrar/domain_transfers/form/_api_errors.html.erb b/app/views/registrar/domain_transfers/form/_api_errors.html.erb new file mode 100644 index 000000000..56bf8c404 --- /dev/null +++ b/app/views/registrar/domain_transfers/form/_api_errors.html.erb @@ -0,0 +1,9 @@ +<% if @api_errors %> +
+ +
+<% end %> diff --git a/app/views/registrar/domain_transfers/form/_batch.html.erb b/app/views/registrar/domain_transfers/form/_batch.html.erb index d6953dd05..5b415f1cd 100644 --- a/app/views/registrar/domain_transfers/form/_batch.html.erb +++ b/app/views/registrar/domain_transfers/form/_batch.html.erb @@ -1,10 +1,11 @@ <%= form_tag registrar_domain_transfers_path, multipart: true, class: 'form-horizontal' do %>
- <%= label_tag 'file' %> + <%= label_tag :batch_file %>
- <%= file_field_tag 'file' %> + <%= file_field_tag :batch_file %> + <%= t '.batch_file_help' %>
diff --git a/app/views/registrar/domain_transfers/new.html.erb b/app/views/registrar/domain_transfers/new.html.erb index 28e196a83..8ba658023 100644 --- a/app/views/registrar/domain_transfers/new.html.erb +++ b/app/views/registrar/domain_transfers/new.html.erb @@ -2,6 +2,8 @@

<%= t '.header' %>

+<%= render 'registrar/domain_transfers/form/api_errors' %> +