Class: Qa::Authorities::AssignFast::GenericAuthority
- Includes:
- WebServiceBase
- Defined in:
- lib/qa/authorities/assign_fast/generic_authority.rb
Overview
A wrapper around the FAST api for use with questioning_authority API documentation: www.oclc.org/developer/develop/web-services/fast-api/assign-fast.en.html
Instance Attribute Summary collapse
-
#subauthority ⇒ Object
readonly
Returns the value of attribute subauthority.
Attributes included from WebServiceBase
Instance Method Summary collapse
-
#build_query_url(q) ⇒ String
Build a FAST API url.
-
#initialize(subauthority) ⇒ GenericAuthority
constructor
A new instance of GenericAuthority.
-
#response(url) ⇒ Object
FAST requires spaces to be encoded as %20 and will not accept + which is Faraday’s default encoding.
-
#search(q) ⇒ Object
Search the FAST api.
Methods included from WebServiceBase
Methods inherited from Base
Constructor Details
#initialize(subauthority) ⇒ GenericAuthority
Returns a new instance of GenericAuthority.
8 9 10 11 |
# File 'lib/qa/authorities/assign_fast/generic_authority.rb', line 8 def initialize() super() @subauthority = end |
Instance Attribute Details
#subauthority ⇒ Object (readonly)
Returns the value of attribute subauthority.
6 7 8 |
# File 'lib/qa/authorities/assign_fast/generic_authority.rb', line 6 def @subauthority end |
Instance Method Details
#build_query_url(q) ⇒ String
Build a FAST API url
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/qa/authorities/assign_fast/generic_authority.rb', line 44 def build_query_url(q) escaped_query = clean_query_string q index = AssignFast.() return_data = "#{index}%2Cidroot%2Cauth%2Ctype" num_rows = 20 # max allowed by the API # sort=usage+desc is not documented by OCLC but seems necessary to get the sort # we formerly got without specifying, that is most useful in our use case. "http://fast.oclc.org/searchfast/fastsuggest?&query=#{escaped_query}&queryIndex=#{index}&queryReturn=#{return_data}&suggest=autoSubject&rows=#{num_rows}&sort=usage+desc" end |
#response(url) ⇒ Object
FAST requires spaces to be encoded as %20 and will not accept + which is Faraday’s default encoding
17 18 19 20 21 22 23 |
# File 'lib/qa/authorities/assign_fast/generic_authority.rb', line 17 def response(url) space_fix_encoder = AssignFast::SpaceFixEncoder.new Faraday.get(url) do |req| req..params_encoder = space_fix_encoder req.headers['Accept'] = 'application/json' end end |
#search(q) ⇒ Object
Search the FAST api
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/qa/authorities/assign_fast/generic_authority.rb', line 29 def search(q) url = build_query_url q begin raw_response = json(url) rescue JSON::ParserError Rails.logger.info "Could not parse response as JSON. Request url: #{url}" return [] end (raw_response) end |