Class: Alma::ItemRequest

Inherits:
BibRequest show all
Defined in:
lib/alma/request.rb

Constant Summary

Constants inherited from BibRequest

BibRequest::REQUEST_TYPES

Instance Attribute Summary collapse

Attributes inherited from BibRequest

#body, #mms_id, #request_type, #user_id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BibRequest

#additional_normalization!, #booking_normalization, #booking_validation, #digitization_normalization, #digitization_validation, #hold_normalization, #hold_validation, #normalize!, #request_type_normalization!, #request_type_validation!, #validate!

Methods included from ApiDefaults

#apikey, #bibs_base_path, #headers, #region, #timeout, #users_base_path

Constructor Details

#initialize(args) ⇒ ItemRequest

Returns a new instance of ItemRequest.



151
152
153
154
155
# File 'lib/alma/request.rb', line 151

def initialize(args)
  super(args)
  @holding_id = args.delete(:holding_id) { raise ArgumentError.new(":holding_id option must be specified to create request") }
  @item_pid = args.delete(:item_pid) { raise ArgumentError.new(":item_pid option must be specified to create request") }
end

Instance Attribute Details

#holding_idObject (readonly)

Returns the value of attribute holding_id.



150
151
152
# File 'lib/alma/request.rb', line 150

def holding_id
  @holding_id
end

#item_pidObject (readonly)

Returns the value of attribute item_pid.



150
151
152
# File 'lib/alma/request.rb', line 150

def item_pid
  @item_pid
end

Class Method Details

.submit(args) ⇒ Object



139
140
141
142
143
144
145
146
147
148
# File 'lib/alma/request.rb', line 139

def self.submit(args)
  request = new(args)
  response = HTTParty.post(
    "#{bibs_base_path}/#{request.mms_id}/holdings/#{request.holding_id}/items/#{request.item_pid}/requests",
    query: {user_id: request.user_id},
    headers: headers,
    body: request.body.to_json
    )
    Alma::Response.new(response)
end

Instance Method Details

#additional_validation!(args) ⇒ Object



157
158
159
160
161
162
163
# File 'lib/alma/request.rb', line 157

def additional_validation!(args)
  args.fetch(:description) do
    raise ArgumentError.new(
    ":description option must be specified when request_type is DIGITIZATION"
    )
  end
end