Sha256: b5103ad41fbebb24011c415521fe877232a05c7a5f3fd34a5f42269d0426012d
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
module JsonapiCompliable module Base extend ActiveSupport::Concern def jsonapi_resource @jsonapi_resource end def query @query ||= Query.new(jsonapi_resource, params) end def query_hash @query_hash ||= query.to_hash end def wrap_context JsonapiCompliable.with_context(jsonapi_context, action_name.to_sym) do yield end end def jsonapi_context self end def jsonapi_scope(scope, opts = {}) jsonapi_resource.build_scope(scope, query, opts) end def normalized_params normalized = params if normalized.respond_to?(:to_unsafe_h) normalized = normalized.to_unsafe_h.deep_symbolize_keys end normalized end def deserialized_params @deserialized_params ||= begin payload = normalized_params if payload[:data] && payload[:data][:type] JsonapiCompliable::Deserializer.new(payload) end end end def jsonapi_render_options options = {} options.merge!(default_jsonapi_render_options) options[:meta] ||= {} options[:expose] ||= {} options[:expose][:context] = jsonapi_context options end def proxy(base = nil, opts = {}) base ||= jsonapi_resource.base_scope scope_opts = opts.slice :sideload_parent_length, :default_paginate, :after_resolve scope = jsonapi_scope(base, scope_opts) ResourceProxy.new jsonapi_resource, scope, query, payload: deserialized_params, single: opts[:single], raise_on_missing: opts[:raise_on_missing] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jsonapi_compliable-1.0.alpha.2 | lib/jsonapi_compliable/base.rb |