module RevelryData::Resource

Public Instance Methods

base_response_meta() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 76
def base_response_meta
  {
    current_user: current_user,
    csrf_token: form_authenticity_token,
    current_org: current_user.try(:org),
    flashes: flash,
  }
end
fmt_is_json_api?() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 47
def fmt_is_json_api?
  request.format == 'json'
end
new() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 10
def new
  if respond_to? :process_request_operations
    process_request_operations
  else
    process_request
  end
end
process_request() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 28
def process_request
  @request = JSONAPI::Request.new(params, context: context,
                                  key_formatter: key_formatter,
                                  server_error_callbacks: (self.class.server_error_callbacks || []))
  unless @request.errors.empty?
    render_errors(@request.errors)
  else
    operation_results = create_operations_processor.process(@request)
    render_results(operation_results)
  end

rescue => e
  handle_exceptions(e)
ensure
  if response.body.size > 0 && fmt_is_json_api?
    response.headers['Content-Type'] = JSONAPI::MEDIA_TYPE
  end
end
render_results(operation_results) click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 59
def render_results(operation_results)
  response_doc = create_response_document(operation_results)

  respond_with response_doc.contents do |fmt|
    fmt.html do
      @json_api = response_doc.contents
      render status: response_doc.status
    end
    fmt.json do
      render json: response_doc.contents, status: response_doc.status
    end
    fmt.props do
      render json: response_doc.contents, status: response_doc.status
    end
  end
end
setup_request() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 18
def setup_request
  @request = JSONAPI::Request.new(params, {
                                          context: context,
                                          key_formatter: key_formatter
                                        })
  render_errors(@request.errors) unless @request.errors.empty?
rescue => e
  handle_exceptions(e)
end
setup_response() click to toggle source
# File lib/revelry_data/resource_controller_concern.rb, line 51
def setup_response
  return unless fmt_is_json_api?

  if response.body.size > 0
    response.headers['Content-Type'] = JSONAPI::MEDIA_TYPE
  end
end