evergreen_holdings 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/evergreen_holdings.rb +48 -4
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8dd3388514b1c9b46a0478dae03c6bbc8b96e496
         | 
| 4 | 
            +
              data.tar.gz: 6e1296f90b066155369b8578e91f6505e7d43a1f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7c5a4590219f7be4216794114f89405cb6badd6ec63710a469d33bd349b8d88d6eb22049c16c7883fb68a863ddb1125cbcfb0551ce1aca0a9dd80e20ca5bccf3
         | 
| 7 | 
            +
              data.tar.gz: 1ea5680f515e5ad9e862d0813ec86c7dd81cf87fd2705d2fe01cd13e2343cc798d439d3da82b28336bccc7f20965c6244dc99da5e30fd4026b78804134ba513e
         | 
    
        data/lib/evergreen_holdings.rb
    CHANGED
    
    | @@ -15,6 +15,7 @@ module EvergreenHoldings | |
| 15 15 | 
             
                        unless fetch_statuses
         | 
| 16 16 | 
             
                            raise CouldNotConnectToEvergreenError
         | 
| 17 17 | 
             
                        end
         | 
| 18 | 
            +
            	    fetch_ou_tree
         | 
| 18 19 | 
             
                    end
         | 
| 19 20 |  | 
| 20 21 | 
             
                    # Fetch holdings data from the Evergreen server
         | 
| @@ -34,6 +35,7 @@ module EvergreenHoldings | |
| 34 35 | 
             
                        return Status.new res.body, self if res
         | 
| 35 36 | 
             
                    end
         | 
| 36 37 |  | 
| 38 | 
            +
            	# Given an ID, returns a human-readable name
         | 
| 37 39 | 
             
                    def location_name id
         | 
| 38 40 | 
             
                        params = "format=json&input_format=json&service=open-ils.circ&method=open-ils.circ.copy_location.retrieve¶m=#{id}"
         | 
| 39 41 | 
             
                        @gateway.query = params
         | 
| @@ -51,8 +53,32 @@ module EvergreenHoldings | |
| 51 53 | 
             
                        return @possible_item_statuses[id]
         | 
| 52 54 | 
             
                    end
         | 
| 53 55 |  | 
| 56 | 
            +
            	def ou_name id
         | 
| 57 | 
            +
                        return @org_units[id][:name]
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
             | 
| 54 60 | 
             
                    private
         | 
| 55 61 |  | 
| 62 | 
            +
            	def add_ou_descendants id, parent
         | 
| 63 | 
            +
                        (@org_units[parent][:descendants] ||= []) << id
         | 
| 64 | 
            +
            	    if @org_units[parent][:parent]
         | 
| 65 | 
            +
            	    add_ou_descendants id, @org_units[parent][:parent]
         | 
| 66 | 
            +
            	    end
         | 
| 67 | 
            +
            	end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            	def take_info_from_ou_tree o
         | 
| 70 | 
            +
            	    @org_units[o[3]] = {}
         | 
| 71 | 
            +
            	    @org_units[o[3]][:name] = o[6]
         | 
| 72 | 
            +
            	    if o[8]
         | 
| 73 | 
            +
            	        @org_units[o[3]][:parent] = o[8]
         | 
| 74 | 
            +
            	        add_ou_descendants o[3], o[8]
         | 
| 75 | 
            +
                        end
         | 
| 76 | 
            +
            	    o[0].each do |p|
         | 
| 77 | 
            +
            	        take_info_from_ou_tree p['__p']
         | 
| 78 | 
            +
            	    end 
         | 
| 79 | 
            +
            	end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
             | 
| 56 82 | 
             
                    def send_query
         | 
| 57 83 | 
             
                        begin
         | 
| 58 84 | 
             
                            res = Net::HTTP.get_response(@gateway)
         | 
| @@ -78,6 +104,19 @@ module EvergreenHoldings | |
| 78 104 | 
             
                        return false
         | 
| 79 105 | 
             
                    end
         | 
| 80 106 |  | 
| 107 | 
            +
                    def fetch_ou_tree
         | 
| 108 | 
            +
                        @org_units = {}
         | 
| 109 | 
            +
            	    params = 'format=json&input_format=json&service=open-ils.actor&method=open-ils.actor.org_tree.retrieve'
         | 
| 110 | 
            +
                        @gateway.query = params
         | 
| 111 | 
            +
                        res = send_query
         | 
| 112 | 
            +
                        if res
         | 
| 113 | 
            +
                            raw_orgs = JSON.parse(res.body)['payload'][0]['__p']
         | 
| 114 | 
            +
            		take_info_from_ou_tree raw_orgs
         | 
| 115 | 
            +
                            return true if @org_units.size > 0
         | 
| 116 | 
            +
                        end
         | 
| 117 | 
            +
                        return false
         | 
| 118 | 
            +
                    end
         | 
| 119 | 
            +
             | 
| 81 120 | 
             
                end
         | 
| 82 121 |  | 
| 83 122 | 
             
                # Status objects represent all the holdings attached to a specific tcn
         | 
| @@ -109,12 +148,14 @@ module EvergreenHoldings | |
| 109 148 | 
             
                            if vol['__p'][0].size > 0
         | 
| 110 149 | 
             
                                vol['__p'][0].each do |item|
         | 
| 111 150 | 
             
                                    unless item['__p'][35].nil?
         | 
| 112 | 
            -
             | 
| 151 | 
            +
            				copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
         | 
| 113 152 | 
             
                                    else
         | 
| 114 153 | 
             
                                        begin
         | 
| 115 | 
            -
             | 
| 154 | 
            +
            				    copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], due_date: item['__p'][35][0]['__p'][6], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
         | 
| 116 155 | 
             
                                        rescue
         | 
| 117 | 
            -
             | 
| 156 | 
            +
            				    puts item['__p'][5]
         | 
| 157 | 
            +
            				    puts @org_units
         | 
| 158 | 
            +
            				    copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
         | 
| 118 159 | 
             
                                        end
         | 
| 119 160 | 
             
                                    end
         | 
| 120 161 | 
             
                                end
         | 
| @@ -131,6 +172,9 @@ module EvergreenHoldings | |
| 131 172 | 
             
                            if copy.status.is_a? Numeric
         | 
| 132 173 | 
             
                                copy.status = @connection.status_name copy.status
         | 
| 133 174 | 
             
                            end
         | 
| 175 | 
            +
                            if copy.owning_lib.is_a? Numeric
         | 
| 176 | 
            +
                                copy.owning_lib = @connection.ou_name copy.owning_lib
         | 
| 177 | 
            +
                            end
         | 
| 134 178 | 
             
                        end
         | 
| 135 179 | 
             
                    end
         | 
| 136 180 |  | 
| @@ -138,7 +182,7 @@ module EvergreenHoldings | |
| 138 182 |  | 
| 139 183 | 
             
                # A physical copy of an item
         | 
| 140 184 | 
             
                class Item
         | 
| 141 | 
            -
                    attr_accessor :location, :status
         | 
| 185 | 
            +
                    attr_accessor :location, :status, :owning_lib
         | 
| 142 186 | 
             
                    attr_reader :barcode, :call_number
         | 
| 143 187 | 
             
                    def initialize data = {}
         | 
| 144 188 | 
             
                        data.each do |k,v|
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: evergreen_holdings
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jane Sandberg
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-04-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: minitest
         | 
| @@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 67 67 | 
             
                  version: '0'
         | 
| 68 68 | 
             
            requirements: []
         | 
| 69 69 | 
             
            rubyforge_project: 
         | 
| 70 | 
            -
            rubygems_version: 2.5. | 
| 70 | 
            +
            rubygems_version: 2.5.2
         | 
| 71 71 | 
             
            signing_key: 
         | 
| 72 72 | 
             
            specification_version: 4
         | 
| 73 73 | 
             
            summary: A ruby gem for getting information about copy availability from Evergreen
         |