class Europeana::Record
Attributes
id[RW]
Europeana
ID of the record
params[RW]
Request parameters to send to the API
Public Class Methods
new(id, params = {})
click to toggle source
@param [String] id Europeana
ID of the record @param [Hash] params Request parameters
# File lib/europeana/record.rb, line 21 def initialize(id, params = {}) self.id = id self.params = params end
Public Instance Methods
get()
click to toggle source
Sends a request for this record to the API
@return [Hash] Record
data
# File lib/europeana/record.rb, line 78 def get 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 if response.code.to_i == 404 # Handle HTML 404 responses on malformed record ID, emulating API's # JSON response. raise Errors::RequestError, "Invalid record identifier: #{@id}" else raise Errors::ResponseError end end
id=(id)
click to toggle source
Sets record ID attribute after validating format.
@param [String] id Record
ID
# File lib/europeana/record.rb, line 41 def id=(id) raise ArgumentError, "Invalid Europeana record ID." unless id.is_a?(String) && id.match(/\A\/[^\/]+\/[^\/]+\B/) @id = id end
params=(params = {})
click to toggle source
Sets request parameters after validating keys
Valid parameter keys:
-
:callback
For explanations of these request parameters, see: labs.europeana.eu/api/record/
@param (see initialize) @return [Hash] Request parameters
# File lib/europeana/record.rb, line 57 def params=(params = {}) params.assert_valid_keys(:callback) @params = params end
params_with_authentication()
click to toggle source
Returns query params with API key added
@return [Hash]
# File lib/europeana/record.rb, line 31 def params_with_authentication raise Europeana::Errors::MissingAPIKeyError unless Europeana.api_key.present? params.merge(:wskey => Europeana.api_key) end
request_uri()
click to toggle source
Gets the URI for this Record
request with parameters
@return [URI]
# File lib/europeana/record.rb, line 67 def request_uri uri = URI.parse(Europeana::URL + "/record" + "#{@id}.json") uri.query = params_with_authentication.to_query uri end