Class: FetchUtil::Searcher
- Inherits:
-
Object
- Object
- FetchUtil::Searcher
- Defined in:
- lib/fetch_util/searcher.rb,
lib/fetch_util/searcher/result_filtering.rb
Constant Summary collapse
- DEFAULT_SOURCES =
%w[brave bing].freeze
Instance Method Summary collapse
-
#initialize(transport: nil, request_log: RequestLog.new, sources: nil, limit: nil, verbose: false, timeout: SearchTransport::DEFAULT_TIMEOUT) ⇒ Searcher
constructor
A new instance of Searcher.
- #search(query) ⇒ Object
Constructor Details
#initialize(transport: nil, request_log: RequestLog.new, sources: nil, limit: nil, verbose: false, timeout: SearchTransport::DEFAULT_TIMEOUT) ⇒ Searcher
Returns a new instance of Searcher.
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fetch_util/searcher.rb', line 14 def initialize(transport: nil, request_log: RequestLog.new, sources: nil, limit: nil, verbose: false, timeout: SearchTransport::DEFAULT_TIMEOUT) @request_log = request_log @sources = Array(sources || DEFAULT_SOURCES).map(&:to_s).uniq unknown = @sources - SearchTransport::SOURCES.keys raise ArgumentError, "unsupported search source: #{unknown.first}" if unknown.any? validate_limit!(limit) @limit = limit @verbose = verbose @transport = transport || SearchTransport.new(sources: @sources, timeout: timeout) end |
Instance Method Details
#search(query) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fetch_util/searcher.rb', line 27 def search(query) encoded_query = query.to_s.strip raise ArgumentError, "query must not be empty" if encoded_query.empty? @request_log.append(search_request_uri(encoded_query)) responses = @transport.search(encoded_query) payload = { query: encoded_query, results: formatted_results(apply_limit(aggregate(responses))) } payload[:diagnostics] = diagnostics(responses) if @verbose payload end |