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