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