Class: DoHClient::Client::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/doh_client/client/base.rb

Direct Known Subclasses

Cloudflare, Google

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.resolve(name, options) ⇒ Object



15
16
17
# File 'lib/doh_client/client/base.rb', line 15

def self.resolve(name, options)
  new.resolve(name, options)
end

Instance Method Details

#build_queryObject

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/doh_client/client/base.rb', line 23

def build_query
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end

#endpointObject

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/doh_client/client/base.rb', line 19

def endpoint
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end

#resolve(name, options) ⇒ Object



9
10
11
12
13
# File 'lib/doh_client/client/base.rb', line 9

def resolve(name, options)
  query = build_query(name, options)
  validate(query)
  Request.get(endpoint, query)
end

#validate(query) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
# File 'lib/doh_client/client/base.rb', line 27

def validate(query)
  raise ArgumentError, "name is a required parameter" if query[:name].nil?
  raise ArgumentError, "type is a required parameter" if query[:type].nil?
  raise ArgumentError, "cd must be a boolean value" if query[:cd] && !boolean?(query[:cd])
end