class Europeana::Search
Attributes
params[RW]
Query params
Public Class Methods
Public Instance Methods
execute()
click to toggle source
Sends the Search
request to the API
# File lib/europeana/search.rb, line 22 def execute uri = request_uri http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) retries = Europeana.max_retries begin response = http.request(request) rescue Timeout::Error, Errno::ECONNREFUSED, EOFError retries -= 1 raise unless retries > 0 sleep Europeana.retry_delay retry end json = JSON.parse(response.body) raise Errors::RequestError, json['error'] unless json['success'] json rescue JSON::ParserError raise Errors::ResponseError end
params=(params = {})
click to toggle source
Sets request parameters after validating keys
Valid parameter keys:
-
:query
-
:profile
-
:qf
-
:rows
-
:start
-
:callback
For explanations of these request parameters, see: labs.europeana.eu/api/search/
Multiple ‘qf` parameters can be passed as a {Hash}:
Europeana::Search.new(:qf => { :what => "Photograph", :where => [ "Paris", "London" ] })
@param (see initialize) @return [Hash] Passed params, if valid
# File lib/europeana/search.rb, line 74 def params=(params = {}) params.assert_valid_keys(:query, :profile, :qf, :rows, :start, :callback) @params = params end
params_with_authentication()
click to toggle source
Returns query params with API key added
@return [Hash]
# File lib/europeana/search.rb, line 49 def params_with_authentication raise Europeana::Errors::MissingAPIKeyError unless Europeana.api_key.present? params.merge(:wskey => Europeana.api_key).reverse_merge(:query => "") end
request_uri()
click to toggle source
Gets the URI for this Search
request with parameters
@return [URI]
# File lib/europeana/search.rb, line 84 def request_uri uri = URI.parse(Europeana::URL + "/search.json") request_params = params_with_authentication if request_params[:qf].is_a?(Hash) qf = request_params.delete(:qf) uri.query = request_params.to_query qf.each_pair do |name, criteria| [ criteria ].flatten.each do |criterion| uri.query = uri.query + "&qf=" + CGI::escape(name.to_s) + ":" + CGI::escape(criterion) end end else uri.query = request_params.to_query end uri end