Class: Alma::RequestOptions

Inherits:
Object
  • Object
show all
Extended by:
ApiDefaults, Forwardable
Defined in:
lib/alma/request_options.rb

Direct Known Subclasses

ItemRequestOptions

Defined Under Namespace

Classes: ResponseError

Constant Summary collapse

REQUEST_OPTIONS_PERMITTED_ARGS =
[:user_id]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ApiDefaults

apikey, bibs_base_path, headers, region, timeout, users_base_path

Constructor Details

#initialize(response) ⇒ RequestOptions

Returns a new instance of RequestOptions.



14
15
16
17
18
# File 'lib/alma/request_options.rb', line 14

def initialize(response)
  @raw_response = response
  validate(response)
  @request_options = response.parsed_response["request_option"]
end

Instance Attribute Details

#raw_responseObject

Returns the value of attribute raw_response.



9
10
11
# File 'lib/alma/request_options.rb', line 9

def raw_response
  @raw_response
end

#request_optionsObject

Returns the value of attribute request_options.



9
10
11
# File 'lib/alma/request_options.rb', line 9

def request_options
  @request_options
end

Class Method Details

.get(mms_id, options = {}) ⇒ Object



21
22
23
24
25
26
# File 'lib/alma/request_options.rb', line 21

def self.get(mms_id, options={})
  url = "#{bibs_base_path}/#{mms_id}/request-options"
  options.select! {|k,_|  REQUEST_OPTIONS_PERMITTED_ARGS.include? k }
  response = HTTParty.get(url, headers: headers, query: options, timeout: timeout)
  new(response)
end

Instance Method Details

#booking_allowed?Boolean

Returns:

  • (Boolean)


49
50
51
52
# File 'lib/alma/request_options.rb', line 49

def booking_allowed?
  !request_options.nil? &&
    !request_options.select {|option| option["type"]["value"] == "BOOKING" }.empty?
end

#digitization_allowed?Boolean

Returns:

  • (Boolean)


44
45
46
47
# File 'lib/alma/request_options.rb', line 44

def digitization_allowed?
  !request_options.nil? &&
    !request_options.select {|option| option["type"]["value"] == "DIGITIZATION" }.empty?
end


59
60
61
62
# File 'lib/alma/request_options.rb', line 59

def ez_borrow_link
  broker = request_options.select {|option| option["type"]["value"] == "RS_BROKER" }
  broker.collect { |opt| opt["request_url"] }.first
end

#hold_allowed?Boolean

Returns:

  • (Boolean)


39
40
41
42
# File 'lib/alma/request_options.rb', line 39

def hold_allowed?
  !request_options.nil? &&
    !request_options.select {|option| option["type"]["value"] == "HOLD" }.empty?
end

#loggableObject



28
29
30
31
# File 'lib/alma/request_options.rb', line 28

def loggable
  { uri: @raw_response&.request&.uri.to_s
  }.select { |k, v| !(v.nil? || v.empty?) }
end

#resource_sharing_broker_allowed?Boolean

Returns:

  • (Boolean)


54
55
56
57
# File 'lib/alma/request_options.rb', line 54

def resource_sharing_broker_allowed?
  !request_options.nil? &&
    !request_options.select {|option| option["type"]["value"] == "RS_BROKER" }.empty?
end

#validate(response) ⇒ Object



33
34
35
36
37
# File 'lib/alma/request_options.rb', line 33

def validate(response)
  if response.code != 200
    raise ResponseError.new("Could not get request options.", loggable.merge(response.parsed_response))
  end
end