Exlibris::Primo offers a set of classes for interacting with the ExLibris Primo APIs.
The Exlibris::Primo::Search class performs a search against Primo for given parameters and exposes the set of holdings, fulltext links, table of contents links, and related links for each record retrieved.
Search can search by a query
search = Exlibris::Primo::Search.new(:base_url => "http://primo.institution.edu",
:institution => "INSTITUTION", :page_size => "20")
search.add_query_term "0143039008", "isbn", "exact"
count = search.size #=> 20+ (assuming there are 20+ records with this isbn)
facets = search.facets #=> Array of Primo facets
records = search.records #=> Array of Primo records
records.size #=> 20 (assuming there are 20+ records with this isbn)
records.each do |record_id, record|
holdings = record.holdings #=> Array of Primo holdings
fulltexts = record.fulltexts #=> Array of Primo full texts
table_of_contents = record.table_of_contents #=> Array of Primo tables of contents
related_links = record.related_links #=> Array of Primo related links
end
Or by a given record id
search = Exlibris::Primo::Search.new(:base_url => "http://primo.institution.edu",
:institution => "INSTITUTION")
search.record_id! "aleph0123456789"
count = search.size #=> 1
records = search.records #=> Array of Primo records
records.size #=> 1
record = records.first #=> Primo record
holdings = record.holdings #=> Array of Primo holdings
fulltexts = record.fulltexts #=> Array of Primo full texts
table_of_contents = record.table_of_contents #=> Array of Primo tables of contents
related_links = record.related_links #=> Array of Primo related links
Search has some methods for setting search params
search = Exlibris::Primo::Search.new(:base_url => "http://primo.institution.edu",
:institution => "INSTITUTION")
search.isbn_is "0143039008" #=> Equivalent to search.add_query_term "0143039008", "isbn", "exact"
search.title_begins_with "Travels" #=> Equivalent to search.add_query_term "Travels", "title", "begins_with"
search.creator_contains "Greene" #=> Equivalent to search.add_query_term "Greene", "creator", "contains"
Search can take a record id the initial hash
search = Exlibris::Primo::Search.new(:base_url => "http://primo.institution.edu",
:institution => "INSTITUTION", :record_id => "aleph0123456789")
Search can also be chained using the ! version of the attribute writer
search = Exlibris::Primo::Search.new.base_url!("http://primo.institution.edu").
institution!("INSTITUTION").record_id!("aleph0123456789")
Or
search = Exlibris::Primo::Search.new.base_url!("http://primo.institution.edu").
institution!("INSTITUTION").title_begins_with("Travels").
creator_contains("Greene").genre_is("Book")
Exlibris::Primo::Config allows you to specify global configuration parameter for Exlibris::Primo
Exlibris::Primo.configure do |config|
config.base_url = "http://primo.institution.edu"
config.institution = "INSTITUTION"
config.libraries = { "LIB_CODE1" => "Library Decoded 1", "LIB_CODE2" => "Library Decoded 2",
"LIB_CODE3" => "Library Decoded 3" }
end
Exlibris::Primo::Config can also read in from a YAML file that specifies the various config elements
Exlibris::Primo.configure do |config|
config.load_yaml "./config/primo.yml"
end
The Exlibris::Primo::EShelf class provides methods for reading a given user's Primo eshelf and eshelf structure as well as adding and removing records.
eshelf = Exlibris::Primo::EShelf.new(:user_id => "USER_ID",
:base_url => "http://primo.institution.edu", :insitution => "INSTITUTION")
records = eshelf.records
size = eshelf.size
basket_id = eshelf.basket_id
eshelf.add_records(["PrimoRecordId","PrimoRecordId2"], basket_id)
The Exlibris::Primo::Reviews class provides methods for reading a given user's Primo reviews features.
reviews = Exlibris::Primo::Reviews.new(:record_id => "aleph0123456789", :user_id => "USER_ID",
:base_url => "http://primo.institution.edu", :insitution => "INSTITUTION")
user_record_reviews = reviews.reviews #=> Array of Primo reviews
The Exlibris::Primo::Tags class provides methods for reading a given user's Primo tags features.
tags = Exlibris::Primo::Tags.new(:record_id => "aleph0123456789", :user_id => "USER_ID",
:base_url => "http://primo.institution.edu", :insitution => "INSTITUTION")
user_record_tags = tags.tags #=> Array of Primo tags