Class: GdsApi::Search
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #base_url ⇒ Object
-
#search(args, additional_headers = {}) ⇒ Object
Perform a search.
-
#search_enum(args, page_size: 100, additional_headers: {}) ⇒ Object
Perform a search, returning the results as an enumerator.
Methods inherited from Base
#client, #create_client, #get_list, #initialize, #url_for_slug
Constructor Details
This class inherits a constructor from GdsApi::Base
Instance Method Details
#base_url ⇒ Object
41 42 43 |
# File 'lib/gds_api/search.rb', line 41 def base_url endpoint end |
#search(args, additional_headers = {}) ⇒ Object
Perform a search.
12 13 14 15 |
# File 'lib/gds_api/search.rb', line 12 def search(args, additional_headers = {}) request_url = "#{base_url}/search.json?#{Rack::Utils.build_nested_query(args)}" get_json(request_url, additional_headers) end |
#search_enum(args, page_size: 100, additional_headers: {}) ⇒ Object
Perform a search, returning the results as an enumerator.
The enumerator abstracts away search-api’s pagination and fetches new pages when necessary.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gds_api/search.rb', line 26 def search_enum(args, page_size: 100, additional_headers: {}) Enumerator.new do |yielder| (0..Float::INFINITY).step(page_size).each do |index| search_params = args.merge(start: index.to_i, count: page_size) results = search(search_params, additional_headers).to_h.fetch("results", []) results.each do |result| yielder << result end if results.count < page_size break end end end end |