module JSONAPI::Fetching

Inclusion and sparse fields support

Private Instance Methods

jsonapi_fields() click to toggle source

Extracts and formats sparse fieldsets

Ex.: `GET /resource?fields=id,created_at`

@return [Hash]

# File lib/jsonapi/fetching.rb, line 10
def jsonapi_fields
  return {} unless params[:fields].respond_to?(:each_pair)

  if defined?(ActiveSupport::HashWithIndifferentAccess)
    extracted = ActiveSupport::HashWithIndifferentAccess.new
  else
    extracted = Hash.new
  end

  params[:fields].each do |k, v|
    extracted[k] = v.to_s.split(',').map(&:strip).compact
  end

  extracted
end
jsonapi_include() click to toggle source

Extracts and whitelists allowed includes

Ex.: `GET /resource?include=relationship,relationship.subrelationship`

@return [Array]

# File lib/jsonapi/fetching.rb, line 31
def jsonapi_include
  params['include'].to_s.split(',').map(&:strip).compact
end