Sha256: 9f7d89dbc8b66157f51d1a9971afa64d422ae555905ce7244267edc37abf9509

Contents?: true

Size: 761 Bytes

Versions: 2

Compression:

Stored size: 761 Bytes

Contents

module JSONAPI
  # Inclusion and sparse fields support
  module Fetching
    private

    # Extracts and formats sparse fieldsets
    #
    # Ex.: `GET /resource?fields[relationship]=id,created_at`
    #
    # @return [Hash]
    def jsonapi_fields
      return {} unless params[:fields].respond_to?(:each_pair)

      ActiveSupport::HashWithIndifferentAccess.new.tap do |h|
        params[:fields].each do |k, v|
          h[k] = v.to_s.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
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jsonapi.rb-1.5.3 lib/jsonapi/fetching.rb
jsonapi.rb-1.5.2 lib/jsonapi/fetching.rb