module KennaKdi
  class SubdomainGenerator
    attr_accessor :tld, :base_domain

    def initialize(tld, base_domain)
      @tld = tld
      @base_domain = base_domain
    end

    def perform(year, month, day)
      # generating a subdomain.
      # https://en.wikipedia.org/wiki/Domain_generation_algorithm
      domain = ""

      16.times do
        year = ((year ^ 8 * year) >> 11) ^ ((year & 0xFFFFFFF0) << 17)
        month = ((month ^ 4 * month) >> 25) ^ 16 * (month & 0xFFFFFFF8)
        day = ((day ^ (day << 13)) >> 19) ^ ((day & 0xFFFFFFFE) << 12)
        domain += (((year ^ month ^ day) % 25) + 97).chr
      end
      domain + base_domain + tld
    end
  end
end