From: shevegen@... Date: 2018-05-17T13:16:20+00:00 Subject: [ruby-core:87141] [Ruby trunk Feature#14771] Add method to create DNS resource from data string Issue #14771 has been updated by shevegen (Robert A. Heiler). Although I myself have not used/needed Resolv::DNS::Resource yet, if the proposed #create method does not conflict with anything in Resolv, then I think it is fine to add it. (If I understood it correctly then this is mostly alias-related, with the toplevel create doing a bit more than just an alias, so it should not be a problem I think?) Documentation should not be forgotten for the new toplevel create method, if it is accepted by matz/the ruby core team. ---------------------------------------- Feature #14771: Add method to create DNS resource from data string https://bugs.ruby-lang.org/issues/14771#change-72132 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- 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. -- https://bugs.ruby-lang.org/ Unsubscribe: