alma 0.2.6 → 0.3.3
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/.circleci/config.yml +54 -0
- data/.circleci/setup-rubygems.sh +3 -0
- data/.github/dependabot.yml +7 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +134 -0
- data/.ruby-version +1 -1
- data/CODE_OF_CONDUCT.md +1 -1
- data/Gemfile +4 -3
- data/Guardfile +75 -0
- data/README.md +136 -26
- data/Rakefile +3 -1
- data/alma.gemspec +21 -16
- data/lib/alma/alma_record.rb +3 -3
- data/lib/alma/api_defaults.rb +39 -0
- data/lib/alma/availability_response.rb +50 -53
- data/lib/alma/bib.rb +26 -42
- data/lib/alma/bib_holding.rb +25 -0
- data/lib/alma/bib_item.rb +28 -38
- data/lib/alma/bib_item_set.rb +72 -12
- data/lib/alma/bib_set.rb +7 -21
- data/lib/alma/config.rb +10 -4
- data/lib/alma/course.rb +47 -0
- data/lib/alma/course_set.rb +17 -0
- data/lib/alma/electronic/README.md +20 -0
- data/lib/alma/electronic/batch_utils.rb +224 -0
- data/lib/alma/electronic/business.rb +29 -0
- data/lib/alma/electronic.rb +167 -0
- data/lib/alma/error.rb +16 -4
- data/lib/alma/fine.rb +16 -0
- data/lib/alma/fine_set.rb +36 -21
- data/lib/alma/item_request_options.rb +23 -0
- data/lib/alma/library.rb +29 -0
- data/lib/alma/library_set.rb +21 -0
- data/lib/alma/loan.rb +31 -2
- data/lib/alma/loan_set.rb +62 -15
- data/lib/alma/location.rb +29 -0
- data/lib/alma/location_set.rb +21 -0
- data/lib/alma/renewal_response.rb +19 -11
- data/lib/alma/request.rb +167 -0
- data/lib/alma/request_options.rb +36 -17
- data/lib/alma/request_set.rb +64 -15
- data/lib/alma/response.rb +45 -0
- data/lib/alma/result_set.rb +27 -35
- data/lib/alma/user.rb +111 -92
- data/lib/alma/user_request.rb +19 -0
- data/lib/alma/user_set.rb +5 -6
- data/lib/alma/version.rb +3 -1
- data/lib/alma.rb +34 -22
- data/log/.gitignore +4 -0
- metadata +118 -10
- data/.travis.yml +0 -5
- data/lib/alma/api.rb +0 -33
    
        data/lib/alma/user.rb
    CHANGED
    
    | @@ -1,35 +1,52 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Alma
         | 
| 2 4 | 
             
              class  User
         | 
| 5 | 
            +
                class ResponseError < Alma::StandardError
         | 
| 6 | 
            +
                end
         | 
| 3 7 | 
             
                extend Forwardable
         | 
| 8 | 
            +
                extend Alma::ApiDefaults
         | 
| 4 9 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
                      Alma::User.new JSON.parse(response.body)
         | 
| 9 | 
            -
                    else
         | 
| 10 | 
            -
                      raise StandardError, parse(response.body)
         | 
| 11 | 
            -
                    end
         | 
| 12 | 
            -
                  end
         | 
| 10 | 
            +
                def self.find(user_id, args = {})
         | 
| 11 | 
            +
                  args[:expand] ||= "fees,requests,loans"
         | 
| 12 | 
            +
                  response = HTTParty.get("#{self.users_base_path}/#{user_id}", query: args, headers: headers, timeout: timeout)
         | 
| 13 13 |  | 
| 14 | 
            -
                   | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
                   | 
| 14 | 
            +
                  Alma::User.new response
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # Authenticates a Alma user with their Alma Password
         | 
| 18 | 
            +
                # @param [Hash] args
         | 
| 19 | 
            +
                # @option args [String] :user_id The unique id of the user
         | 
| 20 | 
            +
                # @option args [String] :password The users local alma password
         | 
| 21 | 
            +
                # @return [Boolean] Whether or not the user Successfully authenticated
         | 
| 22 | 
            +
                def self.authenticate(args)
         | 
| 23 | 
            +
                  user_id = args.delete(:user_id) { raise ArgumentError }
         | 
| 24 | 
            +
                  args.merge!({ op: "auth" })
         | 
| 25 | 
            +
                  response = HTTParty.post("#{users_base_path}/#{user_id}", query: args, headers: headers, timeout: timeout)
         | 
| 26 | 
            +
                  response.code == 204
         | 
| 27 | 
            +
                end
         | 
| 25 28 |  | 
| 26 29 |  | 
| 27 30 | 
             
                # The User object can respond directly to Hash like access of attributes
         | 
| 28 31 | 
             
                def_delegators :response, :[], :[]=, :has_key?, :keys, :to_json
         | 
| 29 32 |  | 
| 30 | 
            -
                def initialize( | 
| 31 | 
            -
                  @ | 
| 32 | 
            -
                  @ | 
| 33 | 
            +
                def initialize(response)
         | 
| 34 | 
            +
                  @raw_response = response
         | 
| 35 | 
            +
                  @response = response.parsed_response
         | 
| 36 | 
            +
                  validate(response)
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def loggable
         | 
| 40 | 
            +
                  { uri: @raw_response&.request&.uri.to_s
         | 
| 41 | 
            +
                  }.select { |k, v| !(v.nil? || v.empty?) }
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def validate(response)
         | 
| 45 | 
            +
                  if response.code != 200
         | 
| 46 | 
            +
                    log = loggable.merge(response.parsed_response)
         | 
| 47 | 
            +
                    error = "The user was not found."
         | 
| 48 | 
            +
                    raise ResponseError.new(error, log)
         | 
| 49 | 
            +
                  end
         | 
| 33 50 | 
             
                end
         | 
| 34 51 |  | 
| 35 52 | 
             
                def response
         | 
| @@ -37,7 +54,19 @@ module Alma | |
| 37 54 | 
             
                end
         | 
| 38 55 |  | 
| 39 56 | 
             
                def id
         | 
| 40 | 
            -
                  self[ | 
| 57 | 
            +
                  self["primary_id"]
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                def total_fines
         | 
| 61 | 
            +
                  response.dig("fees", "value") || "0"
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                def total_requests
         | 
| 65 | 
            +
                  response.dig("requests", "value") || "0"
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                def total_loans
         | 
| 69 | 
            +
                  response.dig("loans", "value") || "0"
         | 
| 41 70 | 
             
                end
         | 
| 42 71 |  | 
| 43 72 |  | 
| @@ -54,43 +83,29 @@ module Alma | |
| 54 83 |  | 
| 55 84 | 
             
                # Persist the user in it's current state back to Alma
         | 
| 56 85 | 
             
                def save!
         | 
| 57 | 
            -
                  response = HTTParty.put("#{users_base_path}/#{id}", headers: headers, body: to_json)
         | 
| 86 | 
            +
                  response = HTTParty.put("#{users_base_path}/#{id}", timeout: timeout, headers: headers, body: to_json)
         | 
| 58 87 | 
             
                  get_body_from(response)
         | 
| 59 88 | 
             
                end
         | 
| 60 89 |  | 
| 61 90 |  | 
| 62 91 | 
             
                def fines
         | 
| 63 | 
            -
                   | 
| 64 | 
            -
                  if response.code == 200
         | 
| 65 | 
            -
                    Alma::FineSet.new get_body_from(response)
         | 
| 66 | 
            -
                  else
         | 
| 67 | 
            -
                    raise StandardError, get_body_from(response)
         | 
| 68 | 
            -
                  end
         | 
| 92 | 
            +
                  Alma::Fine.where_user(id)
         | 
| 69 93 | 
             
                end
         | 
| 70 94 |  | 
| 71 95 | 
             
                def requests
         | 
| 72 | 
            -
                   | 
| 73 | 
            -
                  #TODO Handle Pagination
         | 
| 74 | 
            -
                  #TODO Handle looping through all results
         | 
| 75 | 
            -
                  response = HTTParty.get("#{users_base_path}/#{id}/requests", headers: headers)
         | 
| 76 | 
            -
                  Alma::RequestSet.new(get_body_from(response))
         | 
| 96 | 
            +
                  Alma::UserRequest.where_user(id)
         | 
| 77 97 | 
             
                end
         | 
| 78 98 |  | 
| 79 99 |  | 
| 80 | 
            -
                def loans(args={})
         | 
| 81 | 
            -
                   | 
| 82 | 
            -
                    @loans = send_loans_request(args)
         | 
| 83 | 
            -
                    @recheck_loans = false
         | 
| 84 | 
            -
                  end
         | 
| 85 | 
            -
                  @loans
         | 
| 100 | 
            +
                def loans(args = {})
         | 
| 101 | 
            +
                  @loans ||= Alma::Loan.where_user(id, args)
         | 
| 86 102 | 
             
                end
         | 
| 87 103 |  | 
| 88 104 | 
             
                def renew_loan(loan_id)
         | 
| 89 | 
            -
                  response = send_loan_renewal_request({user_id: id, loan_id: loan_id})
         | 
| 105 | 
            +
                  response = self.class.send_loan_renewal_request({ user_id: id, loan_id: loan_id })
         | 
| 90 106 | 
             
                  if response.renewed?
         | 
| 91 107 | 
             
                    @recheck_loans ||= true
         | 
| 92 108 | 
             
                  end
         | 
| 93 | 
            -
                  get_body_from response
         | 
| 94 109 | 
             
                end
         | 
| 95 110 |  | 
| 96 111 |  | 
| @@ -98,81 +113,85 @@ module Alma | |
| 98 113 | 
             
                  loan_ids.map { |id| renew_loan(id) }
         | 
| 99 114 | 
             
                end
         | 
| 100 115 |  | 
| 101 | 
            -
             | 
| 102 116 | 
             
                def renew_all_loans
         | 
| 103 117 | 
             
                  renew_multiple_loans(loans.map(&:loan_id))
         | 
| 104 118 | 
             
                end
         | 
| 105 119 |  | 
| 106 | 
            -
             | 
| 107 | 
            -
                def recheck_loans?
         | 
| 108 | 
            -
                  @recheck_loans
         | 
| 109 | 
            -
                end
         | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 120 | 
             
                def preferred_email
         | 
| 113 121 | 
             
                  self["contact_info"]["email"].select { |k, v| k["preferred"] }.first["email_address"]
         | 
| 114 122 | 
             
                end
         | 
| 115 123 |  | 
| 116 | 
            -
             | 
| 117 124 | 
             
                def email
         | 
| 118 125 | 
             
                  self["contact_info"]["email"].map { |e| e["email_address"] }
         | 
| 119 126 | 
             
                end
         | 
| 120 127 |  | 
| 128 | 
            +
                def preferred_first_name
         | 
| 129 | 
            +
                  pref_first = self["pref_first_name"] unless self["pref_first_name"] == ""
         | 
| 130 | 
            +
                  pref_first || self["first_name"] || ""
         | 
| 131 | 
            +
                end
         | 
| 121 132 |  | 
| 122 | 
            -
                 | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
                  #TODO Handle looping through all results
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                  # Always expand renewable unless you really don't want to
         | 
| 128 | 
            -
                  args["expand"] ||= "renewable"
         | 
| 129 | 
            -
                  response = HTTParty.get("#{users_base_path}/#{id}/loans", query: args, headers: headers)
         | 
| 130 | 
            -
                  Alma::LoanSet.new(get_body_from(response))
         | 
| 133 | 
            +
                def preferred_middle_name
         | 
| 134 | 
            +
                  pref_middle = self["pref_middle_name"] unless self["pref_middle_name"] == ""
         | 
| 135 | 
            +
                  pref_middle || self["middle_name"] || ""
         | 
| 131 136 | 
             
                end
         | 
| 132 137 |  | 
| 133 | 
            -
                 | 
| 134 | 
            -
             | 
| 135 | 
            -
             | 
| 136 | 
            -
                # @option args [String] :loan_id The unique id of the loan
         | 
| 137 | 
            -
                # @option args [String] :user_id_type Type of identifier being used to search. OPTIONAL
         | 
| 138 | 
            -
                # @return [RenewalResponse] Object indicating the renewal message
         | 
| 139 | 
            -
                def send_loan_renewal_request(args)
         | 
| 140 | 
            -
                  user_id = args.delete(:user_id) { raise ArgumentError }
         | 
| 141 | 
            -
                  loan_id = args.delete(:loan_id) { raise ArgumentError }
         | 
| 142 | 
            -
                  params = {op: 'renew'}
         | 
| 143 | 
            -
                  response = HTTParty.post("#{users_base_path}/#{id}/loans/#{loan_id}", query: params, headers: headers)
         | 
| 144 | 
            -
                  RenewalResponse.new(get_body_from(response))
         | 
| 138 | 
            +
                def preferred_last_name
         | 
| 139 | 
            +
                  pref_last = self["pref_last_name"] unless self["pref_last_name"] == ""
         | 
| 140 | 
            +
                  pref_last || self["last_name"]
         | 
| 145 141 | 
             
                end
         | 
| 146 142 |  | 
| 143 | 
            +
                def preferred_suffix
         | 
| 144 | 
            +
                  self["pref_name_suffix"] || ""
         | 
| 145 | 
            +
                end
         | 
| 147 146 |  | 
| 148 | 
            -
                def  | 
| 149 | 
            -
                   | 
| 147 | 
            +
                def preferred_name
         | 
| 148 | 
            +
                  "#{preferred_first_name} #{preferred_middle_name} #{preferred_last_name} #{preferred_suffix}"
         | 
| 150 149 | 
             
                end
         | 
| 151 150 |  | 
| 152 151 |  | 
| 153 | 
            -
                def self.users_base_path
         | 
| 154 | 
            -
                  "https://api-na.hosted.exlibrisgroup.com/almaws/v1/users"
         | 
| 155 | 
            -
                end
         | 
| 156 152 |  | 
| 157 | 
            -
                 | 
| 158 | 
            -
                  self.class.users_base_path
         | 
| 159 | 
            -
                end
         | 
| 153 | 
            +
                private
         | 
| 160 154 |  | 
| 161 | 
            -
             | 
| 162 | 
            -
                   | 
| 163 | 
            -
                   | 
| 164 | 
            -
                   | 
| 165 | 
            -
             | 
| 155 | 
            +
                  # Attempts to renew a single item for a user
         | 
| 156 | 
            +
                  # @param [Hash] args
         | 
| 157 | 
            +
                  # @option args [String] :user_id The unique id of the user
         | 
| 158 | 
            +
                  # @option args [String] :loan_id The unique id of the loan
         | 
| 159 | 
            +
                  # @option args [String] :user_id_type Type of identifier being used to search. OPTIONAL
         | 
| 160 | 
            +
                  # @return [RenewalResponse] Object indicating the renewal message
         | 
| 161 | 
            +
                  def self.send_loan_renewal_request(args)
         | 
| 162 | 
            +
                    loan_id = args.delete(:loan_id) { raise ArgumentError }
         | 
| 163 | 
            +
                    user_id = args.delete(:user_id) { raise ArgumentError }
         | 
| 164 | 
            +
                    params = { op: "renew" }
         | 
| 165 | 
            +
                    response = HTTParty.post("#{users_base_path}/#{user_id}/loans/#{loan_id}", query: params, headers: headers)
         | 
| 166 | 
            +
                    RenewalResponse.new(response)
         | 
| 167 | 
            +
                  end
         | 
| 166 168 |  | 
| 169 | 
            +
                  # Attempts to renew multiple items for a user
         | 
| 170 | 
            +
                  # @param [Hash] args
         | 
| 171 | 
            +
                  # @option args [String] :user_id The unique id of the user
         | 
| 172 | 
            +
                  # @option args [Array<String>] :loan_ids The unique ids of the loans
         | 
| 173 | 
            +
                  # @option args [String] :user_id_type Type of identifier being used to search. OPTIONAL
         | 
| 174 | 
            +
                  # @return [Array<RenewalResponse>] Array of Objects indicating the renewal messages
         | 
| 175 | 
            +
                  def self.send_multiple_loan_renewal_requests(args)
         | 
| 176 | 
            +
                    loan_ids = args.delete(:loan_ids) { raise ArgumentError }
         | 
| 177 | 
            +
                    loan_ids.map { |id| Alma::User.send_loan_renewal_request(args.merge(loan_id: id)) }
         | 
| 178 | 
            +
                  end
         | 
| 167 179 |  | 
| 168 | 
            -
             | 
| 169 | 
            -
             | 
| 170 | 
            -
             | 
| 180 | 
            +
                  def get_body_from(response)
         | 
| 181 | 
            +
                    JSON.parse(response.body)
         | 
| 182 | 
            +
                  end
         | 
| 171 183 |  | 
| 172 184 |  | 
| 173 | 
            -
             | 
| 174 | 
            -
             | 
| 175 | 
            -
             | 
| 185 | 
            +
                  def self.users_base_path
         | 
| 186 | 
            +
                    "https://api-na.hosted.exlibrisgroup.com/almaws/v1/users"
         | 
| 187 | 
            +
                  end
         | 
| 176 188 |  | 
| 177 | 
            -
             | 
| 189 | 
            +
                  def users_base_path
         | 
| 190 | 
            +
                    self.class.users_base_path
         | 
| 191 | 
            +
                  end
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                  def headers
         | 
| 194 | 
            +
                    self.class.headers
         | 
| 195 | 
            +
                  end
         | 
| 178 196 | 
             
              end
         | 
| 197 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Alma
         | 
| 4 | 
            +
              class UserRequest < AlmaRecord
         | 
| 5 | 
            +
                extend Alma::ApiDefaults
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.where_user(user_id, args = {})
         | 
| 8 | 
            +
                  # Default to upper limit
         | 
| 9 | 
            +
                  args[:limit] ||= 100
         | 
| 10 | 
            +
                  response = HTTParty.get(
         | 
| 11 | 
            +
                    "#{users_base_path}/#{user_id}/requests",
         | 
| 12 | 
            +
                    query: args,
         | 
| 13 | 
            +
                    headers: headers,
         | 
| 14 | 
            +
                    timeout: timeout
         | 
| 15 | 
            +
                  )
         | 
| 16 | 
            +
                  Alma::RequestSet.new(response)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
    
        data/lib/alma/user_set.rb
    CHANGED
    
    | @@ -1,18 +1,17 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Alma
         | 
| 2 4 | 
             
              class UserSet
         | 
| 3 | 
            -
             | 
| 4 5 | 
             
                def top_level_key
         | 
| 5 | 
            -
                   | 
| 6 | 
            -
             | 
| 6 | 
            +
                  "users"
         | 
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 9 | 
             
                def response_records_key
         | 
| 10 | 
            -
                   | 
| 10 | 
            +
                  "user"
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 13 | 
             
                def single_record_class
         | 
| 14 14 | 
             
                  Alma::User
         | 
| 15 15 | 
             
                end
         | 
| 16 | 
            -
             | 
| 17 16 | 
             
              end
         | 
| 18 | 
            -
            end
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/alma/version.rb
    CHANGED
    
    
    
        data/lib/alma.rb
    CHANGED
    
    | @@ -1,27 +1,39 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 6 | 
            -
            require  | 
| 7 | 
            -
            require  | 
| 8 | 
            -
            require  | 
| 9 | 
            -
            require  | 
| 10 | 
            -
            require  | 
| 11 | 
            -
            require  | 
| 12 | 
            -
            require  | 
| 13 | 
            -
            require  | 
| 14 | 
            -
            require  | 
| 15 | 
            -
            require  | 
| 16 | 
            -
            require  | 
| 17 | 
            -
            require  | 
| 18 | 
            -
            require  | 
| 19 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alma/version"
         | 
| 4 | 
            +
            require "alma/config"
         | 
| 5 | 
            +
            require "alma/api_defaults"
         | 
| 6 | 
            +
            require "alma/error"
         | 
| 7 | 
            +
            require "alma/alma_record"
         | 
| 8 | 
            +
            require "alma/response"
         | 
| 9 | 
            +
            require "alma/user"
         | 
| 10 | 
            +
            require "alma/bib"
         | 
| 11 | 
            +
            require "alma/loan"
         | 
| 12 | 
            +
            require "alma/result_set"
         | 
| 13 | 
            +
            require "alma/loan_set"
         | 
| 14 | 
            +
            require "alma/user_set"
         | 
| 15 | 
            +
            require "alma/fine_set"
         | 
| 16 | 
            +
            require "alma/fine"
         | 
| 17 | 
            +
            require "alma/bib_set"
         | 
| 18 | 
            +
            require "alma/request_set"
         | 
| 19 | 
            +
            require "alma/renewal_response"
         | 
| 20 | 
            +
            require "alma/availability_response"
         | 
| 21 | 
            +
            require "alma/bib_item"
         | 
| 22 | 
            +
            require "alma/request_options"
         | 
| 23 | 
            +
            require "alma/item_request_options"
         | 
| 24 | 
            +
            require "alma/request"
         | 
| 25 | 
            +
            require "alma/user_request"
         | 
| 26 | 
            +
            require "alma/electronic"
         | 
| 27 | 
            +
            require "alma/bib_holding"
         | 
| 28 | 
            +
            require "alma/library"
         | 
| 29 | 
            +
            require "alma/library_set"
         | 
| 30 | 
            +
            require "alma/location"
         | 
| 31 | 
            +
            require "alma/location_set"
         | 
| 32 | 
            +
            require "alma/course_set"
         | 
| 33 | 
            +
            require "alma/course"
         | 
| 20 34 |  | 
| 21 35 | 
             
            module Alma
         | 
| 36 | 
            +
              require "httparty"
         | 
| 22 37 |  | 
| 23 38 | 
             
              ROOT = File.dirname __dir__
         | 
| 24 | 
            -
              WADL_DIR = File.join(Alma::ROOT, 'lib','alma','wadl')
         | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 39 | 
             
            end
         | 
    
        data/log/.gitignore
    ADDED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,16 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: alma
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 | 
            +
            - Jennifer Anton
         | 
| 8 | 
            +
            - David Kinzer
         | 
| 7 9 | 
             
            - Chad Nelson
         | 
| 8 10 | 
             
            autorequire: 
         | 
| 9 11 | 
             
            bindir: exe
         | 
| 10 12 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 13 | 
            +
            date: 2021-12-02 00:00:00.000000000 Z
         | 
| 12 14 | 
             
            dependencies:
         | 
| 13 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 16 | 
             
              name: ezwadl
         | 
| @@ -52,34 +54,48 @@ dependencies: | |
| 52 54 | 
             
                - - ">="
         | 
| 53 55 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 56 | 
             
                    version: '0'
         | 
| 57 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 58 | 
            +
              name: activesupport
         | 
| 59 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 60 | 
            +
                requirements:
         | 
| 61 | 
            +
                - - ">="
         | 
| 62 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 63 | 
            +
                    version: '0'
         | 
| 64 | 
            +
              type: :runtime
         | 
| 65 | 
            +
              prerelease: false
         | 
| 66 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 67 | 
            +
                requirements:
         | 
| 68 | 
            +
                - - ">="
         | 
| 69 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 70 | 
            +
                    version: '0'
         | 
| 55 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 72 | 
             
              name: bundler
         | 
| 57 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 74 | 
             
                requirements:
         | 
| 59 75 | 
             
                - - "~>"
         | 
| 60 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 77 | 
            +
                    version: '2.0'
         | 
| 62 78 | 
             
              type: :development
         | 
| 63 79 | 
             
              prerelease: false
         | 
| 64 80 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 81 | 
             
                requirements:
         | 
| 66 82 | 
             
                - - "~>"
         | 
| 67 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 84 | 
            +
                    version: '2.0'
         | 
| 69 85 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 86 | 
             
              name: rake
         | 
| 71 87 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 88 | 
             
                requirements:
         | 
| 73 89 | 
             
                - - "~>"
         | 
| 74 90 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 91 | 
            +
                    version: '13.0'
         | 
| 76 92 | 
             
              type: :development
         | 
| 77 93 | 
             
              prerelease: false
         | 
| 78 94 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 95 | 
             
                requirements:
         | 
| 80 96 | 
             
                - - "~>"
         | 
| 81 97 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 98 | 
            +
                    version: '13.0'
         | 
| 83 99 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 100 | 
             
              name: rspec
         | 
| 85 101 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -122,20 +138,96 @@ dependencies: | |
| 122 138 | 
             
                - - ">="
         | 
| 123 139 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 140 | 
             
                    version: '0'
         | 
| 141 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 142 | 
            +
              name: rubocop
         | 
| 143 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 144 | 
            +
                requirements:
         | 
| 145 | 
            +
                - - ">="
         | 
| 146 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 147 | 
            +
                    version: '0'
         | 
| 148 | 
            +
              type: :development
         | 
| 149 | 
            +
              prerelease: false
         | 
| 150 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 151 | 
            +
                requirements:
         | 
| 152 | 
            +
                - - ">="
         | 
| 153 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 154 | 
            +
                    version: '0'
         | 
| 155 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 156 | 
            +
              name: rubocop-rails
         | 
| 157 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 158 | 
            +
                requirements:
         | 
| 159 | 
            +
                - - ">="
         | 
| 160 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 161 | 
            +
                    version: '0'
         | 
| 162 | 
            +
              type: :development
         | 
| 163 | 
            +
              prerelease: false
         | 
| 164 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 165 | 
            +
                requirements:
         | 
| 166 | 
            +
                - - ">="
         | 
| 167 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 168 | 
            +
                    version: '0'
         | 
| 169 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 170 | 
            +
              name: byebug
         | 
| 171 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 172 | 
            +
                requirements:
         | 
| 173 | 
            +
                - - ">="
         | 
| 174 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 175 | 
            +
                    version: '0'
         | 
| 176 | 
            +
              type: :development
         | 
| 177 | 
            +
              prerelease: false
         | 
| 178 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 179 | 
            +
                requirements:
         | 
| 180 | 
            +
                - - ">="
         | 
| 181 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 182 | 
            +
                    version: '0'
         | 
| 183 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 184 | 
            +
              name: guard
         | 
| 185 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 186 | 
            +
                requirements:
         | 
| 187 | 
            +
                - - ">="
         | 
| 188 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 189 | 
            +
                    version: '0'
         | 
| 190 | 
            +
              type: :development
         | 
| 191 | 
            +
              prerelease: false
         | 
| 192 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 193 | 
            +
                requirements:
         | 
| 194 | 
            +
                - - ">="
         | 
| 195 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 196 | 
            +
                    version: '0'
         | 
| 197 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 198 | 
            +
              name: guard-rspec
         | 
| 199 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 200 | 
            +
                requirements:
         | 
| 201 | 
            +
                - - ">="
         | 
| 202 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 203 | 
            +
                    version: '0'
         | 
| 204 | 
            +
              type: :development
         | 
| 205 | 
            +
              prerelease: false
         | 
| 206 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 207 | 
            +
                requirements:
         | 
| 208 | 
            +
                - - ">="
         | 
| 209 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 210 | 
            +
                    version: '0'
         | 
| 125 211 | 
             
            description: Client for Ex Libris Alma Web Services
         | 
| 126 212 | 
             
            email:
         | 
| 213 | 
            +
            - jennifer.anton@temple.edu
         | 
| 214 | 
            +
            - david.kinzer@temple.edu
         | 
| 127 215 | 
             
            - chad.nelson@temple.edu
         | 
| 128 216 | 
             
            executables: []
         | 
| 129 217 | 
             
            extensions: []
         | 
| 130 218 | 
             
            extra_rdoc_files: []
         | 
| 131 219 | 
             
            files:
         | 
| 220 | 
            +
            - ".circleci/config.yml"
         | 
| 221 | 
            +
            - ".circleci/setup-rubygems.sh"
         | 
| 222 | 
            +
            - ".github/dependabot.yml"
         | 
| 132 223 | 
             
            - ".gitignore"
         | 
| 133 224 | 
             
            - ".rspec"
         | 
| 225 | 
            +
            - ".rubocop.yml"
         | 
| 134 226 | 
             
            - ".ruby-gemset"
         | 
| 135 227 | 
             
            - ".ruby-version"
         | 
| 136 | 
            -
            - ".travis.yml"
         | 
| 137 228 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 138 229 | 
             
            - Gemfile
         | 
| 230 | 
            +
            - Guardfile
         | 
| 139 231 | 
             
            - LICENSE.txt
         | 
| 140 232 | 
             
            - README.md
         | 
| 141 233 | 
             
            - Rakefile
         | 
| @@ -144,26 +236,43 @@ files: | |
| 144 236 | 
             
            - bin/setup
         | 
| 145 237 | 
             
            - lib/alma.rb
         | 
| 146 238 | 
             
            - lib/alma/alma_record.rb
         | 
| 147 | 
            -
            - lib/alma/ | 
| 239 | 
            +
            - lib/alma/api_defaults.rb
         | 
| 148 240 | 
             
            - lib/alma/availability_response.rb
         | 
| 149 241 | 
             
            - lib/alma/bib.rb
         | 
| 242 | 
            +
            - lib/alma/bib_holding.rb
         | 
| 150 243 | 
             
            - lib/alma/bib_item.rb
         | 
| 151 244 | 
             
            - lib/alma/bib_item_set.rb
         | 
| 152 245 | 
             
            - lib/alma/bib_set.rb
         | 
| 153 246 | 
             
            - lib/alma/config.rb
         | 
| 247 | 
            +
            - lib/alma/course.rb
         | 
| 248 | 
            +
            - lib/alma/course_set.rb
         | 
| 249 | 
            +
            - lib/alma/electronic.rb
         | 
| 250 | 
            +
            - lib/alma/electronic/README.md
         | 
| 251 | 
            +
            - lib/alma/electronic/batch_utils.rb
         | 
| 252 | 
            +
            - lib/alma/electronic/business.rb
         | 
| 154 253 | 
             
            - lib/alma/error.rb
         | 
| 254 | 
            +
            - lib/alma/fine.rb
         | 
| 155 255 | 
             
            - lib/alma/fine_set.rb
         | 
| 256 | 
            +
            - lib/alma/item_request_options.rb
         | 
| 257 | 
            +
            - lib/alma/library.rb
         | 
| 258 | 
            +
            - lib/alma/library_set.rb
         | 
| 156 259 | 
             
            - lib/alma/loan.rb
         | 
| 157 260 | 
             
            - lib/alma/loan_set.rb
         | 
| 261 | 
            +
            - lib/alma/location.rb
         | 
| 262 | 
            +
            - lib/alma/location_set.rb
         | 
| 158 263 | 
             
            - lib/alma/renewal_response.rb
         | 
| 264 | 
            +
            - lib/alma/request.rb
         | 
| 159 265 | 
             
            - lib/alma/request_options.rb
         | 
| 160 266 | 
             
            - lib/alma/request_set.rb
         | 
| 267 | 
            +
            - lib/alma/response.rb
         | 
| 161 268 | 
             
            - lib/alma/result_set.rb
         | 
| 162 269 | 
             
            - lib/alma/user.rb
         | 
| 270 | 
            +
            - lib/alma/user_request.rb
         | 
| 163 271 | 
             
            - lib/alma/user_set.rb
         | 
| 164 272 | 
             
            - lib/alma/version.rb
         | 
| 165 273 | 
             
            - lib/alma/wadl/bib.wadl
         | 
| 166 274 | 
             
            - lib/alma/wadl/user.wadl
         | 
| 275 | 
            +
            - log/.gitignore
         | 
| 167 276 | 
             
            homepage: https://github.com/tulibraries/alma_rb
         | 
| 168 277 | 
             
            licenses:
         | 
| 169 278 | 
             
            - MIT
         | 
| @@ -183,8 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 183 292 | 
             
                - !ruby/object:Gem::Version
         | 
| 184 293 | 
             
                  version: '0'
         | 
| 185 294 | 
             
            requirements: []
         | 
| 186 | 
            -
             | 
| 187 | 
            -
            rubygems_version: 2.7.6
         | 
| 295 | 
            +
            rubygems_version: 3.1.4
         | 
| 188 296 | 
             
            signing_key: 
         | 
| 189 297 | 
             
            specification_version: 4
         | 
| 190 298 | 
             
            summary: Client for Ex Libris Alma Web Services
         | 
    
        data/.travis.yml
    DELETED
    
    
    
        data/lib/alma/api.rb
    DELETED
    
    | @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            require 'ezwadl'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Alma
         | 
| 4 | 
            -
              module Api
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
                def default_params
         | 
| 8 | 
            -
                  { :query => { :apikey => Alma.configuration.apikey } }
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def query_merge(hash)
         | 
| 12 | 
            -
                  {:query => default_params[:query].merge(hash)}
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def resources
         | 
| 16 | 
            -
                  @resources ||= load_wadl
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def load_wadl(wadl_filename = nil)
         | 
| 20 | 
            -
                  wadl_filename ||= set_wadl_filename
         | 
| 21 | 
            -
                  parsed_wadl = EzWadl::Parser.parse(File.join(Alma::WADL_DIR, wadl_filename)) do |rs|
         | 
| 22 | 
            -
                    rs.first.path = Alma.configuration.region
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
                  parsed_wadl.first
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def set_wadl_filename
         | 
| 28 | 
            -
                  # Each class including this module should define this
         | 
| 29 | 
            -
                  raise NotImplementedError 'You must define the wadl_filename method'
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         |