module Namecheap::Dynamic::Dns::Processor

This module puts it all together and the main functions are here.

Public Instance Methods

process_domains() click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 8
def process_domains
  return unless pre_check_domain
  self.updated_domains = []

  domains.each do |domain, attr|
    next unless pre_check_sub_domains(domain, attr)
    logger.info("Checking domain: #{domain}")
    process_subdomains(domain,
                       attr[:subdomains],
                       attr[:password],
                       extract_ip(attr[:ip] ||= ip))
  end
end

Private Instance Methods

pre_check_domain() click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 24
def pre_check_domain
  return false unless got_external_ip?
  domains?
end
pre_check_sub_domains(domain, attr) click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 29
def pre_check_sub_domains(domain, attr)
  return unless valid_domain?(domain)
  return unless password?(attr)
  return unless subdomains?(attr)
  return if attr[:ip].nil? && ip.nil?
  true
end
process_ip(target_ip, attributes) click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 58
def process_ip(target_ip, attributes)
  if attributes && attributes.key?(:ip) && !attributes[:ip].strip.empty?
    target_ip = attributes[:ip]
  end
  extract_ip(target_ip)
end
process_subdomain(domain, subdomain, password, ip) click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 52
def process_subdomain(domain, subdomain, password, ip)
  logger.info("  - Updating host '#{subdomain}' !!")
  request generate_url(subdomain, domain, password, ip)
  updated_domains.push [subdomain, domain].join('.')
end
process_subdomains(domain, subdomains, password, target_ip) click to toggle source
# File lib/namecheap/dynamic/dns/processor.rb, line 37
def process_subdomains(domain, subdomains, password, target_ip)
  subdomains.each do |subdomain, attributes|
    ip = process_ip(target_ip, attributes)

    next unless valid_domain?([subdomain, domain].join('.'))

    if host_ip_match?(domain, subdomain, ip)
      logger.info("  - Host '#{subdomain}' is Valid.")
      next
    else
      process_subdomain(domain, subdomain, password, ip)
    end
  end
end