# frozen_string_literal: true module Streams module DnsProviders # DNS lab in Redis (e dump hosts). Nessuna chiamata al registrar. class Lab < Base REDIS_KEY = "stream_dns:a_records" def initialize(redis: nil) @redis = redis end def upsert_a(name, ip) host = normalize(name) redis.hset(REDIS_KEY, host, ip.to_s) true end def delete_a(name) redis.hdel(REDIS_KEY, normalize(name)) true end def resolve(name) redis.hget(REDIS_KEY, normalize(name)) end def all_records redis.hgetall(REDIS_KEY) end def hosts_file_snippet all_records.sort.map { |host, ip| "#{ip}\t#{host}" }.join("\n") end private def normalize(name) name.to_s.strip.downcase.delete_suffix(".") end def redis @redis ||= Redis.new(url: ENV.fetch("REDIS_URL", "redis://localhost:6379/0")) end end end end