Sha256: 9e9fa8d68fe27a265eb0327d6079a5bf32d55a44d5a4e3a84409dd0595ad467b

Contents?: true

Size: 642 Bytes

Versions: 2

Compression:

Stored size: 642 Bytes

Contents

# Inclusion and sparse fields support
module JSONAPI::Fetching
  private

  # Extracts and formats sparse fieldsets
  #
  # Ex.: `GET /resource?fields[relationship]=id,created_at`
  #
  # @return [Hash]
  def jsonapi_fields
    ActiveSupport::HashWithIndifferentAccess.new.tap do |h|
      (params[:fields] || []).each do |k, v|
        h[k] = v.split(',').map(&:strip).compact
      end
    end
  end

  # Extracts and whitelists allowed includes
  #
  # Ex.: `GET /resource?include=relationship,relationship.subrelationship`
  #
  # @return [Array]
  def jsonapi_include
    params['include'].to_s.split(',').map(&:strip).compact
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jsonapi.rb-1.1.0 lib/jsonapi/fetching.rb
jsonapi.rb-1.0.0 lib/jsonapi/fetching.rb