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