class Skala::AlephAdapter::GetUserHoldRequests
Public Instance Methods
call(username, options = {})
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 9 def call(username, options = {}) resolved_user_id = resolve_user(username.upcase) raw_aleph_response = adapter.restful_api.patron(resolved_user_id).circulationActions.requests.holds.get(view: :full) if raw_aleph_response.include?("<error>") return nil else self.class::Result.new( hold_requests: Nokogiri::XML(raw_aleph_response).xpath("//hold-request").map do |_hold_request| { id: id(_hold_request), deleteable: deleteable?(_hold_request), place_in_queue: place_in_queue(_hold_request), creation_date: creation_date(_hold_request), begin_request_date: begin_request_date(_hold_request), end_request_date: end_request_date(_hold_request), begin_hold_date: begin_hold_date(_hold_request), end_hold_date: end_hold_date(_hold_request), record: { id: record_id(_hold_request) }, status: status(_hold_request) } end, source: raw_aleph_response ) end end
Private Instance Methods
begin_hold_date(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 79 def begin_hold_date(hold_request) if date = hold_request.at_xpath(".//z37-hold-date").try(:content).presence Date.strptime(date, "%Y%m%d") end rescue nil end
begin_request_date(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 63 def begin_request_date(hold_request) if date = hold_request.at_xpath(".//z37-request-date").try(:content).presence Date.strptime(date, "%Y%m%d") end rescue nil end
creation_date(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 45 def creation_date(hold_request) if date = hold_request.at_xpath("./z37/z37-open-date").try(:content) Date.strptime(date, "%Y%m%d") end end
deleteable?(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 51 def deleteable?(hold_request) hold_request.attr("delete") == "Y" && !hold_request.at_xpath(".//status").content.presence.try(:include?, "On hold until") end
end_hold_date(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 87 def end_hold_date(hold_request) if date = hold_request.at_xpath(".//z37-end-hold-date").try(:content).presence Date.strptime(date, "%Y%m%d") end rescue nil end
end_request_date(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 71 def end_request_date(hold_request) if date = hold_request.at_xpath(".//z37-end-request-date").try(:content).presence Date.strptime(date, "%Y%m%d") end rescue nil end
id(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 41 def id(hold_request) hold_request.attr("href")[/[^\/]+\Z/][/\A[^?]+/] end
place_in_queue(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 55 def place_in_queue(hold_request) hold_request.at_xpath(".//status").try(:content).presence.try(:[], /Waiting in position \d+/).try(:[], /\d+/).try(:to_i) end
record_id(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 59 def record_id(hold_request) hold_request.at_xpath(".//z13-doc-number").try(:content) end
status(hold_request)
click to toggle source
# File lib/skala/aleph_adapter/get_user_hold_requests.rb, line 95 def status(hold_request) case hold_request.at_xpath(".//z37-status").try(:content).presence.try(:upcase) when "WAITING IN QUEUE" then :requested when "S" then :on_hold when "IN PROCESS" then :in_process end end