lib/alma/fine_set.rb in alma-0.2.8 vs lib/alma/fine_set.rb in alma-0.3.1
- old
+ new
@@ -1,43 +1,54 @@
+# frozen_string_literal: true
+
module Alma
- class FineSet
- extend Forwardable
- include Enumerable
- #include Alma::Error
+ class FineSet < ResultSet
+ class ResponseError < Alma::StandardError
+ end
- attr_reader :response
- def_delegators :response, :[], :fetch
+ attr_reader :results, :raw_response
+ def_delegators :results, :empty?
- def initialize(response_body_hash)
- @response = response_body_hash
+ def initialize(raw_response)
+ @raw_response = raw_response
+ @response = raw_response.parsed_response
+ validate(raw_response)
+ @results = @response.fetch(key, [])
+ .map { |item| single_record_class.new(item) }
end
- def key
- 'fee'
+ def loggable
+ { uri: @raw_response&.request&.uri.to_s
+ }.select { |k, v| !(v.nil? || v.empty?) }
end
- def each
- @response.fetch(key, []).map{|item| Alma::AlmaRecord.new(item)}
+ def validate(response)
+ if response.code != 200
+ message = "Could not find fines."
+ log = loggable.merge(response.parsed_response)
+ raise ResponseError.new(message, log)
+ end
end
- alias list each
- def size
- each.count
+ def each(&block)
+ @results.each(&block)
end
- def sum
- fetch('total_sum', 0)
+ def success?
+ raw_response.response.code.to_s == "200"
end
- alias :total_sum :sum
- def currency
- fetch('currency', nil)
+ def key
+ "fee"
end
- def total_record_count
- fetch('total_record_count', 0)
+ def sum
+ fetch("total_sum", 0)
end
- alias :total_records :total_record_count
+ alias :total_sum :sum
+ def currency
+ fetch("currency", nil)
+ end
end
end