Module: JSONAPI::Utils

Extended by:
ActiveSupport::Concern
Defined in:
lib/jsonapi/utils.rb,
lib/jsonapi/utils/version.rb

Defined Under Namespace

Modules: Exceptions

Constant Summary collapse

VERSION =
'0.3.4'

Instance Method Summary collapse

Instance Method Details

#jsonapi_format_errors(exception) ⇒ Object



24
25
26
# File 'lib/jsonapi/utils.rb', line 24

def jsonapi_format_errors(exception)
  JSONAPI::ErrorsOperationResult.new(exception.errors[0].code, exception.errors)
end

#jsonapi_render(options) ⇒ Object



12
13
14
15
16
17
# File 'lib/jsonapi/utils.rb', line 12

def jsonapi_render(options)
  if options.has_key?(:json)
    response = jsonapi_serialize(options[:json], options[:options] || {})
    render json: response, status: options[:status] || :ok
  end
end

#jsonapi_render_bad_requestObject



32
33
34
# File 'lib/jsonapi/utils.rb', line 32

def jsonapi_render_bad_request
  jsonapi_render_errors(::JSONAPI::Utils::Exceptions::BadRequest.new)
end

#jsonapi_render_errors(exception) ⇒ Object



19
20
21
22
# File 'lib/jsonapi/utils.rb', line 19

def jsonapi_render_errors(exception)
  error = jsonapi_format_errors(exception)
  render json: { errors: error.errors }, status: error.code
end

#jsonapi_render_internal_server_errorObject



28
29
30
# File 'lib/jsonapi/utils.rb', line 28

def jsonapi_render_internal_server_error
  jsonapi_render_errors(::JSONAPI::Utils::Exceptions::InternalServerError.new)
end

#jsonapi_render_not_foundObject



36
37
38
39
# File 'lib/jsonapi/utils.rb', line 36

def jsonapi_render_not_found
  id = extract_ids(@request.params)
  jsonapi_render_errors(JSONAPI::Exceptions::RecordNotFound.new(id))
end

#jsonapi_render_not_found_with_nullObject



41
42
43
# File 'lib/jsonapi/utils.rb', line 41

def jsonapi_render_not_found_with_null
  render json: { data: nil }, status: 200
end

#jsonapi_serialize(records, options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/jsonapi/utils.rb', line 45

def jsonapi_serialize(records, options = {})
  results = JSONAPI::OperationResults.new

  fix_request_options(params, records)

  if records.respond_to?(:to_ary)
    records = fix_when_hash(records, options) if needs_to_be_fixed?(records)
    @resources = build_collection(records, options)
    results.add_result(JSONAPI::ResourcesOperationResult.new(:ok, @resources, result_options(options)))
  else
    @resource = turn_into_resource(records, options)
    results.add_result(JSONAPI::ResourceOperationResult.new(:ok, @resource))
  end

  create_response_document(results).contents
end