Add method to create DNS resource from data string
I recently played around with DNS over HTTPS.
I found that it's a little bit tricky to generate the appropriate resource using the Resolv::DNS::Resource hierarchy.
Here is what my code ended up:
if klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue) if klass < Resolv::DNS::Resource::DomainName resource = klass.new(Resolv::DNS::Name.create(answer["data"])) else resource = klass.new(answer["data"]) end
It would be nice to have a simpler interface, e.g.
if klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue) klass.create(answer["data"]) end
In this case, the
Resource#create method would take a data string and convert it to a name if required.
The base resource class could just have
alias create new, while the
DomainName class could have:
def create(data) self.new(Name.create(data)) end
Or something like that.