Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Library to work with Exlibris' Primo discovery system.
Ruby

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.gitignore
.jrubyrc
.travis.yml
Gemfile
MIT-LICENSE
README.md
Rakefile
exlibris-primo.gemspec Fix malformed version specification for Rake in the Gemspec

README.md

Exlibris::Primo

Gem Version Build Status Dependency Status Code Climate Coverage Status

Exlibris::Primo offers a set of classes for interacting with the ExLibris Primo APIs.

Exlibris::Primo::Search

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.

Example of Exlibris::Primo::Search in action

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

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

Exlibris::Primo::EShelf

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.

Example of Exlibris::Primo::EShelf in action

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)

Exlibris::Primo::Reviews

The Exlibris::Primo::Reviews class provides methods for reading a given user's Primo reviews features.

Example of Exlibris::Primo::Reviews in action

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

Exlibris::Primo::Tags

The Exlibris::Primo::Tags class provides methods for reading a given user's Primo tags features.

Example of Exlibris::Primo::Tags in action

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
Something went wrong with that request. Please try again.