Sha256: 0c8b26a2357ee1aace0d5583cb12feb7f1d774633221c8c08f5289d881f99bcf

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module Alma
  class  Bib
    extend Alma::ApiDefaults
    extend Forwardable
    
    def self.find(ids, args)
      get_bibs(ids, args)
    end

    def self.get_bibs(ids, args={})
      response = HTTParty.get(
        self.bibs_base_path, 
        query: {mms_id: ids_from_array(ids) }.merge(args),
        headers: headers,
        timeout: timeout
        )

      if response.code == 200
        Alma::BibSet.new(get_body_from(response))
      else
        raise StandardError, get_body_from(response)
      end  
    end


    def self.get_availability(ids, args={})
      args.merge!({expand: 'p_avail,e_avail,d_avail'})
      bibs = get_bibs(ids, args)

      Alma::AvailabilityResponse.new(bibs)
    end



    attr_accessor :id, :response

    # The User object can respond directly to Hash like access of attributes
    def_delegators :response, :[], :[]=, :has_key?, :keys, :to_json, :each

    def initialize(response_body)
      @response = response_body
      @id = @response['mms_id'].to_s
    end

    # The raw MARCXML record, converted to a Hash
    def record
      @record ||= XmlSimple.xml_in(response['anies'].first)
    end


      private

      def bibs_base_path
        self.class.bibs_base_path
      end

      def headers
        self.class.headers
      end

      def self.get_body_from(response)
        JSON.parse(response.body)
      end

      def self.ids_from_array(ids)
        ids.map(&:to_s).map(&:strip).join(',')
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alma-0.3.1 lib/alma/bib.rb