mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 05:26:17 +02:00
48 lines
1.4 KiB
Ruby
48 lines
1.4 KiB
Ruby
module Whois
|
|
class DeleteRecord < ActiveInteraction::Base
|
|
string :name
|
|
string :type
|
|
|
|
validates :type, inclusion: { in: %w[reserved blocked domain disputed zone] }
|
|
|
|
def execute
|
|
send "delete_#{type}", name
|
|
end
|
|
|
|
# 1. deleting own
|
|
# 2. trying to regenerate reserved in order domain is still in the list
|
|
def delete_domain(name)
|
|
WhoisRecord.where(name: name).destroy_all
|
|
|
|
BlockedDomain.find_by(name: name).try(:generate_data)
|
|
ReservedDomain.find_by(name: name).try(:generate_data)
|
|
Dispute.active.find_by(domain_name: name).try(:generate_data)
|
|
end
|
|
|
|
def delete_reserved(name)
|
|
remove_status_from_whois(domain_name: name, domain_status: 'Reserved')
|
|
end
|
|
|
|
def delete_blocked(name)
|
|
delete_reserved(name)
|
|
end
|
|
|
|
def delete_disputed(name)
|
|
return if Dispute.active.find_by(domain_name: name).present?
|
|
|
|
remove_status_from_whois(domain_name: name, domain_status: 'disputed')
|
|
end
|
|
|
|
def delete_zone(name)
|
|
WhoisRecord.where(name: name).destroy_all
|
|
Whois::Record.where(name: name).destroy_all
|
|
end
|
|
|
|
def remove_status_from_whois(domain_name:, domain_status:)
|
|
Whois::Record.where(name: domain_name).each do |r|
|
|
r.json['status'] = r.json['status'].delete_if { |status| status == domain_status }
|
|
r.json['status'].blank? ? r.destroy : r.save
|
|
end
|
|
end
|
|
end
|
|
end
|