class DoHClient::Server
Attributes
client[R]
Public Class Methods
new(endpoints, resolver = DoHClient::Client::Google)
click to toggle source
Calls superclass method
# File lib/doh_client/server.rb, line 8 def initialize(endpoints, resolver = DoHClient::Client::Google) super(endpoints) @client = resolver end
Public Instance Methods
process(name, resource_class, transaction)
click to toggle source
# File lib/doh_client/server.rb, line 13 def process(name, resource_class, transaction) type = resource_class.to_s.split('::').last begin response = client.resolve(name, type: type) rescue ResponseError => _ return transaction.fail!(:NXDomain) unless answers end answers = response["Answer"] return transaction.fail!(:NXDomain) unless answers transaction.append_question! answers.each do |answer| next unless klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue) resource = klass < Resolv::DNS::Resource::DomainName ? klass.new(Resolv::DNS::Name.create(answer["data"])) : klass.new(answer["data"]) transaction.response.add_answer(answer["name"], answer["TTL"], resource) end end