Sha256: fd9a57819cfebe535410540dccb2924de1b38dfc571636c9c2e13ca02dc8e1e0

Contents?: true

Size: 1.19 KB

Versions: 65

Compression:

Stored size: 1.19 KB

Contents

module JsonapiCompliable
  module Util
    # Utility class for dealing with Include Directives
    class IncludeParams
      class << self
        # Let's say the user requested these sideloads:
        #
        #   GET /posts?include=comments.author
        #
        # But our resource had this code:
        #
        #   sideload_whitelist({ index: [:comments] })
        #
        # We should drop the 'author' sideload from the request.
        #
        # Hashes become 'include directive hashes' within the library. ie
        #
        #   [:tags, { comments: :author }]
        #
        # Becomes
        #
        #   { tags: {}, comments: { author: {} } }
        #
        # @param [Hash] requested_includes the nested hash the user requested
        # @param [Hash] allowed_includes the nested hash configured via DSL
        # @return [Hash] the scrubbed hash
        def scrub(requested_includes, allowed_includes)
          {}.tap do |valid|
            requested_includes.each_pair do |key, sub_hash|
              if allowed_includes[key]
                valid[key] = scrub(sub_hash, allowed_includes[key])
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
jsonapi_compliable-0.11.34 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.33 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.32 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.31 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.30 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.29 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.28 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.27 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.26 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.25 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-1.0.alpha.2 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.24 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.23 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.22 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.21 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.20 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.19 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.18 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.17 lib/jsonapi_compliable/util/include_params.rb
jsonapi_compliable-0.11.16 lib/jsonapi_compliable/util/include_params.rb