lib/alma/bib_item.rb in alma-0.3.1 vs lib/alma/bib_item.rb in alma-0.3.2
- old
+ new
@@ -1,27 +1,40 @@
-require 'alma/bib_item_set'
+# frozen_string_literal: true
+
+require "alma/bib_item_set"
module Alma
class BibItem
extend Alma::ApiDefaults
extend Forwardable
attr_reader :item
def_delegators :item, :[], :has_key?, :keys, :to_json
- PERMITTED_ARGS = [
+ PERMITTED_ARGS = [
:limit, :offset, :expand, :user_id, :current_library,
:current_location, :q, :order_by, :direction
]
- def self.find(mms_id, options={})
+ def self.find(mms_id, options = {})
holding_id = options.delete(:holding_id) || "ALL"
- options.select! {|k,_| PERMITTED_ARGS.include? k }
+ options.select! { |k, _| PERMITTED_ARGS.include? k }
url = "#{bibs_base_path}/#{mms_id}/holdings/#{holding_id}/items"
response = HTTParty.get(url, headers: headers, query: options, timeout: timeout)
- BibItemSet.new(response, options.merge({mms_id: mms_id, holding_id: holding_id}))
+ BibItemSet.new(response, options.merge({ mms_id: mms_id, holding_id: holding_id }))
end
+ def self.find_by_barcode(barcode)
+ response = HTTParty.get(items_base_path, headers: headers, query: { item_barcode: barcode }, timeout: timeout, follow_redirects: true)
+ new(response)
+ end
+
+ def self.scan(mms_id:, holding_id:, item_pid:, options: {})
+ url = "#{bibs_base_path}/#{mms_id}/holdings/#{holding_id}/items/#{item_pid}"
+ response = HTTParty.post(url, headers: headers, query: options)
+ new(response)
+ end
+
def initialize(item)
@item = item
end
def holding_data
@@ -83,31 +96,31 @@
def temp_location_name
holding_data.dig("temp_location", "desc")
end
def temp_call_number
- holding_data.fetch("temp_call_number","")
+ holding_data.fetch("temp_call_number", "")
end
def has_temp_call_number?
!temp_call_number.empty?
end
def call_number
if has_temp_call_number?
holding_data.fetch("temp_call_number")
else
- holding_data.fetch("call_number","")
+ holding_data.fetch("call_number", "")
end
end
def has_alt_call_number?
!alt_call_number.empty?
end
def alt_call_number
- item_data.fetch("alternative_call_number","")
+ item_data.fetch("alternative_call_number", "")
end
def has_process_type?
!process_type.empty?
end
@@ -119,10 +132,10 @@
def missing_or_lost?
!!process_type.match(/MISSING|LOST_LOAN/)
end
def base_status
- item_data.dig("base_status","value")|| ""
+ item_data.dig("base_status", "value") || ""
end
def in_place?
base_status == "1"
end