Class: Rixie::Search::DuckDuckGo

Inherits:
Base
  • Object
show all
Defined in:
lib/rixie/search/duck_duck_go.rb

Constant Summary collapse

SEARCH_URL =
"https://lite.duckduckgo.com/lite/"
DEFAULT_MAX_RESULTS =
5

Instance Method Summary collapse

Constructor Details

#initialize(http_client: nil) ⇒ DuckDuckGo

Returns a new instance of DuckDuckGo.



11
12
13
14
15
16
17
18
19
# File 'lib/rixie/search/duck_duck_go.rb', line 11

def initialize(http_client: nil)
  @http_client = Rixie::Http::Client.new(
    headers: {
      "Accept" => "text/html",
      "Accept-Language" => "en-US,en;q=0.9"
    },
    http_client: http_client
  )
end

Instance Method Details

#search(query, max_results: DEFAULT_MAX_RESULTS) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rixie/search/duck_duck_go.rb', line 21

def search(query, max_results: DEFAULT_MAX_RESULTS)
  begin
    require "nokogiri"
  rescue LoadError
    raise Rixie::ConfigurationError, "nokogiri gem is required for Search::DuckDuckGo. Add `gem 'nokogiri'` to your Gemfile."
  end

  url = "#{SEARCH_URL}?q=#{URI.encode_www_form_component(query)}"
  response = @http_client.get(url)
  doc = Nokogiri::HTML(response[:body])
  parse_results(doc, max_results)
end