deep_unrest 0.1.70 → 0.1.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ef68924e90a33009700f08b985e9855d1d66710be4d11f059c075bb921cbe5c
4
- data.tar.gz: 657a8ec04cdc0b0809a2210333df22915ab4611cdbb01bd9479c82766950db0f
3
+ metadata.gz: b194593cf43cb152738a7a45f748af7ebebcdc8e1eef0e65cb4e66cb5afead0b
4
+ data.tar.gz: c64a30a21918ad72e44269e652962ac73c11129b7a43b8ae8fe430e1ff081dd9
5
5
  SHA512:
6
- metadata.gz: 6d3ff2ef8aba1c1b7d7fbf9f804bc39a67f75b0c4db85afdc2dec1c5fc05121d9e3724b57b0deffabe1ca0f94626b6bb591d17a51bdbfcc3d063cc49739d28c3
7
- data.tar.gz: c5ae82beb75ac2772f162710bf978f0ca9960a83ef428c2d67dea685d34427e7ddaa95f9c265fc1e579784e86f0a59dc2083c6e8ea0248e780e9a94f50607b76
6
+ metadata.gz: 0cbc2b6412e32c94173f074d205d5d04b8b24f50acaa036e5ec6aa9faa70edda2cd5811ee9b07dfc72e5e1dae59b7b8386a97a83f53cf6bca989d005cffff1d4
7
+ data.tar.gz: 206e06dbbb0fa9991acb0ac8dac8ce14f2348b7aa57d7cb79688312d3c0f073ede6570605e1db49f216b1ae52e9225ce1879d6b3a4cba9c77e0be87ad2136277
@@ -116,19 +116,27 @@ module DeepUnrest
116
116
  paginator = get_paginator(query, parent)
117
117
  resource = item[:resource]
118
118
 
119
- # monkey patch the resource to only show authorized records
120
119
  r_metaclass = class << resource; self; end
121
- r_metaclass.send(:alias_method, :records_original, :records)
120
+ if r_metaclass.method_defined? :records
121
+ r_metaclass.class_eval do
122
+ alias_method :records_original, :records
123
+ end
124
+ end
125
+
122
126
  # TODO: find a way to do this that doesn't blow out the original :records method
123
- r_metaclass.define_singleton_method(:records) { |ctx|
124
- item[:scope].merge(records_original(ctx))
127
+ resource.define_singleton_method(:records) { |ctx|
128
+ full_scope = if self.respond_to? :records_original
129
+ records_original(ctx)
130
+ else
131
+ super(ctx)
132
+ end
133
+
134
+ item[:scope].merge(full_scope)
125
135
  }
126
136
 
127
137
  # transform sort value casing for rails
128
138
  sort_criteria = query[:sort]&.map { |s| s.clone.merge(field: s[:field].underscore) }
129
-
130
139
  serializer = JSONAPI::ResourceSerializer.new(resource)
131
-
132
140
  processor = JSONAPI::Processor.new(resource,
133
141
  :find,
134
142
  filters: query[:filter] || {},
@@ -138,12 +146,8 @@ module DeepUnrest
138
146
  paginator: paginator)
139
147
 
140
148
  jsonapi_result = processor.process
141
-
142
149
  resource_results = format_processor_results(resource, jsonapi_result)
143
150
 
144
- # un-monkey patch the resource :records method
145
- r_metaclass.send(:alias_method, :records, :records_original)
146
-
147
151
  meta << {
148
152
  addr: [*addr, item[:key], 'meta'],
149
153
  serialized_result: {
@@ -174,6 +178,15 @@ module DeepUnrest
174
178
  included << result
175
179
  recurse_included_queries(ctx, result, mappings, parent_context, included, meta, [*next_addr, :include])
176
180
  end
181
+ ensure
182
+ # un-monkey patch the resource :records method
183
+ if r_metaclass.method_defined? :records_original
184
+ r_metaclass.class_eval do
185
+ alias_method :records, :records_original
186
+ end
187
+ else
188
+ r_metaclass.undef_method :records
189
+ end
177
190
  end
178
191
 
179
192
  def self.get_query_type(item)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeepUnrest
4
- VERSION = '0.1.70'
4
+ VERSION = '0.1.71'
5
5
  end
@@ -82,7 +82,7 @@ module DeepUnrest
82
82
 
83
83
  p.parse_params(resource, { attributes: attributes }, opts)[:attributes]
84
84
  rescue JSONAPI::Exceptions::ParameterNotAllowed
85
- unpermitted_keys = attributes.keys.map(&:to_sym) - opts
85
+ unpermitted_keys = attributes.keys.map(&:underscore).map(&:to_sym) - opts
86
86
  item[:errors] = unpermitted_keys.each_with_object({}) do |attr_key, memo|
87
87
  memo[attr_key] = 'Unpermitted parameter'
88
88
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deep_unrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.70
4
+ version: 0.1.71
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lynn Hurley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-14 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails