internetee/registry

View on GitHub
app/models/whois/record.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module Whois
  class Record < Whois::Server
    self.table_name = 'whois_records'

    def self.without_auctions
      ids = Whois::Record.all.select { |record| Auction.where(domain: record.name).blank? }
                         .pluck(:id)
      Whois::Record.where(id: ids)
    end

    def self.disclaimer
      Setting.registry_whois_disclaimer
    end

    # rubocop:disable Metrics/AbcSize
    def update_from_auction(auction)
      if auction.started?
        update!(json: { name: auction.domain,
                        status: ['AtAuction'],
                        disclaimer: self.class.disclaimer })
        ToStdout.msg "Updated from auction WHOIS record #{inspect}"
      elsif auction.no_bids?
        ToStdout.msg "Destroying WHOIS record #{inspect}"
        destroy!
      elsif auction.awaiting_payment? || auction.payment_received?
        update!(json: { name: auction.domain,
                        status: ['PendingRegistration'],
                        disclaimer: self.class.disclaimer,
                        registration_deadline: auction.whois_deadline })
        ToStdout.msg "Updated from auction WHOIS record #{inspect}"
      end
    end
    # rubocop:enable Metrics/AbcSize
  end
end