jsonapi_compliable 0.11.28 → 0.11.33

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
- SHA1:
3
- metadata.gz: 663bc3d881ef5e2d4e9df5049f7d1869adf17ca1
4
- data.tar.gz: d27c131078dc07d0c5acb4fe39ae6fcd45e4bdbb
2
+ SHA256:
3
+ metadata.gz: 01f3e608b051cfaa5b57ba3a7fb903efa236bd7cd0133ca51f877e9e1075f520
4
+ data.tar.gz: 7d22b7ed049c4a2a1102de5dff16f6b7176a3ef101801a26b378432b6b839f6a
5
5
  SHA512:
6
- metadata.gz: 9632f59f934921ea26ef3d6759ffa21157cdc70d3ecd72995399c7c74c7ac5e13b28eba90d4724de81f81a49f73443440a8fcd1009946d85ba7e88b7fc9a726c
7
- data.tar.gz: 43b3f8ceac5b3fdb7dafac79539b3c511767738b8f495e226231b3d2eff755e4be5ce93f05b0ebdd1b68b948812061971fb87b8fefef73e03dc3d8fb479ee44f
6
+ metadata.gz: ff96d1a22840b5a92d2908c9755e3868cedf74d65946823865a94161e9b3654924db34aed625c2d72a6a297fc2bc2e990ddff567f7c03772c3d665cbb892ec37
7
+ data.tar.gz: cc56759cd4ba9fe9900ca9295fb46a5683c7fcd2fe03fbd806f7e1d7bb34fe6b7cc865c1c5d427b7b1c24d9ab071f6778dfb614c8feb58f617d76e0957b3432e
@@ -1 +1 @@
1
- 2.3.0
1
+ 2.5.2
@@ -345,7 +345,7 @@ module JsonapiCompliable
345
345
  end
346
346
 
347
347
  def force_includes?
348
- not deserialized_params.data.nil?
348
+ not (deserialized_params.data.nil? || deserialized_params.data.empty?)
349
349
  end
350
350
 
351
351
  def perform_render_jsonapi(opts)
@@ -48,14 +48,23 @@ class JsonapiCompliable::Deserializer
48
48
  # @param payload [Hash] The incoming payload with symbolized keys
49
49
  # @param env [Hash] the Rack env (e.g. +request.env+).
50
50
  def initialize(payload, env)
51
- @payload = payload
51
+ @payload = payload || {}
52
52
  @payload = @payload[:_jsonapi] if @payload.has_key?(:_jsonapi)
53
53
  @env = env
54
+ validate_content_type
55
+ end
56
+
57
+ # checks Content-Type header and prints a warning if it doesn't seem correct
58
+ def validate_content_type
59
+ content_type = @env['CONTENT_TYPE'] || ""
60
+ if !(content_type.include?("application/json") || content_type.include?("application/vnd.api+json"))
61
+ print("WARNING - JSONAPI Compliable :: Content-Type header appears to be set to an invalid value: #{content_type}\n")
62
+ end
54
63
  end
55
64
 
56
65
  # @return [Hash] the raw :data value of the payload
57
66
  def data
58
- @payload[:data]
67
+ @payload[:data] || {}
59
68
  end
60
69
 
61
70
  # @return [String] the raw :id value of the payload
@@ -209,8 +209,10 @@ module JsonapiCompliable
209
209
  key = key.to_sym
210
210
 
211
211
  if association?(key)
212
- k, v = Hash(value).to_a.first
213
- hash[key][:filter][k.to_sym] = v
212
+ symbolized_hash = value.each_with_object({}) do |(k, v), hash|
213
+ hash[k.to_sym] = v
214
+ end
215
+ hash[key][:filter].merge!(symbolized_hash)
214
216
  else
215
217
  hash[resource.type][:filter][key] = value
216
218
  end
@@ -95,7 +95,13 @@ module JsonapiCompliable
95
95
  end
96
96
  else
97
97
  namespace = Util::Sideload.namespace(@namespace, sideload.name)
98
- resolve_sideload = -> { sideload.resolve(results, @query, namespace) }
98
+ resolve_sideload = -> {
99
+ begin
100
+ sideload.resolve(results, @query, namespace)
101
+ ensure
102
+ ActiveRecord::Base.clear_active_connections! if defined?(ActiveRecord)
103
+ end
104
+ }
99
105
  if concurrent
100
106
  promises << Concurrent::Promise.execute(&resolve_sideload)
101
107
  else
@@ -45,26 +45,28 @@ class JsonapiCompliable::Util::ValidationResponse
45
45
  end
46
46
 
47
47
  def all_valid?(model, deserialized_params)
48
- valid = true
49
- return false unless valid_object?(model)
48
+ checks = []
49
+ checks << valid_object?(model)
50
50
  deserialized_params.each_pair do |name, payload|
51
51
  if payload.is_a?(Array)
52
52
  related_objects = model.send(name)
53
- related_objects.each do |r|
53
+ related_objects.each_with_index do |r, index|
54
54
  valid = valid_object?(r)
55
+ checks << valid
55
56
 
56
57
  if valid
57
- valid = all_valid?(r, deserialized_params[:relationships] || {})
58
+ checks << all_valid?(r, payload[index][:relationships] || {})
58
59
  end
59
60
  end
60
61
  else
61
62
  related_object = model.send(name)
62
63
  valid = valid_object?(related_object)
64
+ checks << valid
63
65
  if valid
64
- valid = all_valid?(related_object, deserialized_params[:relationships] || {})
66
+ checks << all_valid?(related_object, payload[:relationships] || {})
65
67
  end
66
68
  end
67
69
  end
68
- valid
70
+ checks.all? { |c| c == true }
69
71
  end
70
72
  end
@@ -1,3 +1,3 @@
1
1
  module JsonapiCompliable
2
- VERSION = "0.11.28"
2
+ VERSION = "0.11.33"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi_compliable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.28
4
+ version: 0.11.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  - Venkata Pasupuleti
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-08-31 00:00:00.000000000 Z
12
+ date: 2020-11-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jsonapi-serializable
@@ -115,7 +115,7 @@ dependencies:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
- description:
118
+ description:
119
119
  email:
120
120
  - richmolj@gmail.com
121
121
  - spasupuleti4@bloomberg.net
@@ -253,11 +253,11 @@ files:
253
253
  - lib/jsonapi_compliable/util/sideload.rb
254
254
  - lib/jsonapi_compliable/util/validation_response.rb
255
255
  - lib/jsonapi_compliable/version.rb
256
- homepage:
256
+ homepage:
257
257
  licenses:
258
258
  - MIT
259
259
  metadata: {}
260
- post_install_message:
260
+ post_install_message:
261
261
  rdoc_options: []
262
262
  require_paths:
263
263
  - lib
@@ -272,9 +272,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
272
  - !ruby/object:Gem::Version
273
273
  version: '0'
274
274
  requirements: []
275
- rubyforge_project:
276
- rubygems_version: 2.6.11
277
- signing_key:
275
+ rubygems_version: 3.0.6
276
+ signing_key:
278
277
  specification_version: 4
279
278
  summary: Easily build jsonapi.org-compatible APIs
280
279
  test_files: []