Sha256: 27c459b707eefa3836f617c8f9f3653d12c629964dfc32ed903c4e469212f83f

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

module Alma
  class  Bib
    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)}, 
        headers: headers
        )

      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 self.bibs_base_path
        "#{self.region}/almaws/v1/bibs"
      end

      def bibs_base_path
        self.class.bibs_base_path
      end

      def self.headers
        { "Authorization": "apikey #{self.apikey}",
        "Accept": "application/json",
        "Content-Type": "application/json" }
      end
  
  
      def headers
        self.class.headers
      end
  
  
      def self.apikey
        Alma.configuration.apikey
      end
      
      def self.region
        Alma.configuration.region
      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

3 entries across 3 versions & 1 rubygems

Version Path
alma-0.2.8 lib/alma/bib.rb
alma-0.2.6 lib/alma/bib.rb
alma-0.2.5 lib/alma/bib.rb