Module: JSONAPIonify::Api::Resource::Caller

Defined in:
lib/jsonapionify/api/resource/caller.rb

Instance Method Summary collapse

Instance Method Details

#callObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/jsonapionify/api/resource/caller.rb', line 5

def call
  do_respond = proc { __respond }
  do_request = proc { __request }
  response   = @callbacks ? run_callbacks(:request, &do_request) : do_request.call
rescue Errors::RequestError => e
  raise e unless errors.present?
  response = error_response
rescue Errors::CacheHit
  JSONAPIonify.logger.debug "Cache Hit: #{@cache_options[:key]}"
  response = self.class.cache_store.read @cache_options[:key]
rescue Exception => exception
  response = rescued_response exception, @__context, do_respond
ensure
  self.class.cache_store.delete @cache_options[:key] unless !response || response[0] < 300
end

#response_definitionObject



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/jsonapionify/api/resource/caller.rb', line 21

def response_definition
  extension = @__context.request.extension
  responses = action.responses
  response = nil
  @__context.request.accept.each do |accept|
    response = responses.find { |r| r.accept_with_matcher? @__context } ||
      responses.find { |r| r.accept_with_header? accept: accept, extension: extension }
    break if response
  end
  response || error_now(:not_acceptable)
end