jsonapi_compliable 0.11.28 → 0.11.33

Sign up to get free protection for your applications and to get access to all the features.
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: []