json_apiable 0.5 → 0.6.2

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
2
  SHA256:
3
- metadata.gz: 3843cfd61c5ec39658230e3aee84aac39ff18a26799a881c1d872a3b47872198
4
- data.tar.gz: 8e4296ea01ed83998c2fd306d720c180bc78af3e3c379668244a833033cc34be
3
+ metadata.gz: 29bff2e7154441ebe7f91c57312fe056b909aa2bc9915271367488dc19befc22
4
+ data.tar.gz: 1e2d71d8579cb79a5093fe5c20e3d2a66fc1e5bd1c45cf779cf9dcb11748c120
5
5
  SHA512:
6
- metadata.gz: 7c96a6ab06c100116d3d9317d39702dda617131e11b74abfa53f120911c2aa221612af7d9ced0be283a142da56dbf84966a07de36915267500fe797f07753b57
7
- data.tar.gz: 953edf80dfe8550142e09da95ad3f1c8bc6502b2fede6dfb0afd9169aaccc40e75d0c96e9e59bf879fdac6f0de80a0c73ccbc3a133e26d84b98441ba267171c3
6
+ metadata.gz: 7771ee1909f4e08fd3d695a6b3ec701152f86f0261a1b5ccff994673fbbf4a9b5b9eb87854eb3f82a3e04f3289392198b0d79c676e27f9b081e9d3efffd675f8
7
+ data.tar.gz: 8aa6522bf45da91e221e9f4b9ac16a52fbb418ef174c108ca38a66232239e2b0cde418c122989793b63ef19add8a9238ab476cb665f1e4a8e29ce46df1008268
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ Changelog
2
+ =========
3
+ ## 0.6.2 06/02/2021
4
+ * Renaming not_blank_matcher to any_non_blank_matcher
5
+
6
+ ## 0.6.1 06/02/2021
7
+ * Adding not_blank_matcher to filter-matchers
8
+
9
+ ## 0.6.0 05/15/2021
10
+ * Adding support for "has_many" nested attributes
11
+ * Updating specs
12
+
13
+ ## 0.5.2 05/06/2021
14
+ * Updating dependency gems
@@ -10,15 +10,19 @@ module JsonApiable
10
10
 
11
11
  module_function :matches?
12
12
 
13
+ def any_non_blank_matcher
14
+ proc do |value|
15
+ handle_error(value) do
16
+ value.present?
17
+ end
18
+ end
19
+ end
20
+
13
21
  # returns true for boolean values, false for any other
14
22
  def boolean_matcher
15
23
  proc do |value|
16
24
  handle_error(value) do
17
- if true_matcher.call(value) || (value == false || value =~ /^(false|f|0)$/i)
18
- true
19
- else
20
- false
21
- end
25
+ true_matcher.call(value) || (value == false || value =~ /^(false|f|0)$/i)
22
26
  end
23
27
  end
24
28
  end
@@ -27,11 +31,7 @@ module JsonApiable
27
31
  def true_matcher
28
32
  proc do |value|
29
33
  handle_error(value) do
30
- if value == true || value =~ /^(true|t|1)$/i
31
- true
32
- else
33
- false
34
- end
34
+ value == true || value =~ /^(true|t|1)$/i
35
35
  end
36
36
  end
37
37
  end
@@ -20,6 +20,7 @@ module JsonApiable
20
20
 
21
21
  rescue_from ArgumentError, with: :respond_to_bad_argument
22
22
  rescue_from ActionController::UnpermittedParameters, with: :respond_to_bad_argument
23
+ rescue_from JSONAPI::Serializer::UnsupportedIncludeError, with: :respond_to_exception_raised
23
24
  rescue_from MalformedRequestError, with: :respond_to_malformed_request
24
25
  rescue_from UnprocessableEntityError, with: :respond_to_unprocessable_entity
25
26
  rescue_from UnauthorizedError, with: :respond_to_unauthorized
@@ -34,7 +34,7 @@ module JsonApiable
34
34
  attributes&.each do |key, value|
35
35
  next if excluded_attributes&.include?(key.to_sym)
36
36
 
37
- new_key = value.is_a?(ActionController::Parameters) ? "#{key}_attributes" : key
37
+ new_key = nested_attributes?(value) ? "#{key}_attributes" : key
38
38
  attrs_hash[new_key] = value.is_a?(ActionController::Parameters) ? value.to_h : value
39
39
  end
40
40
  attrs_hash
@@ -78,5 +78,9 @@ module JsonApiable
78
78
  def self.hashify(allowed_relationships)
79
79
  allowed_relationships.map { |rel| { rel => {} } }
80
80
  end
81
+
82
+ def self.nested_attributes?(value)
83
+ value.is_a?(ActionController::Parameters) || value.is_a?(Array)
84
+ end
81
85
  end
82
86
  end
@@ -32,6 +32,11 @@ module JsonApiable
32
32
  json_render_errors json: errors, status: :bad_request
33
33
  end
34
34
 
35
+ def respond_to_exception_raised(err_msg)
36
+ errors = [{ title: 'Invalid Argument', detail: err_msg.message }]
37
+ json_render_errors json: errors, status: :bad_request
38
+ end
39
+
35
40
  def respond_to_malformed_request(err_msg = nil)
36
41
  errors = [{ title: 'Malformed Request', detail: err_msg.to_s }]
37
42
  json_render_errors json: errors, status: :bad_request
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonApiable
4
- VERSION = "0.5"
4
+ VERSION = "0.6.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_apiable
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Polischuk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-03 00:00:00.000000000 Z
11
+ date: 2021-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -203,8 +203,8 @@ files:
203
203
  - ".rspec"
204
204
  - ".rubocop.yml"
205
205
  - ".travis.yml"
206
+ - CHANGELOG.md
206
207
  - Gemfile
207
- - Gemfile.lock
208
208
  - LICENSE.txt
209
209
  - README.md
210
210
  - Rakefile
data/Gemfile.lock DELETED
@@ -1,196 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- json_apiable (0.5)
5
- activerecord
6
- activesupport
7
- jsonapi-serializer
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actioncable (6.1.3.1)
13
- actionpack (= 6.1.3.1)
14
- activesupport (= 6.1.3.1)
15
- nio4r (~> 2.0)
16
- websocket-driver (>= 0.6.1)
17
- actionmailbox (6.1.3.1)
18
- actionpack (= 6.1.3.1)
19
- activejob (= 6.1.3.1)
20
- activerecord (= 6.1.3.1)
21
- activestorage (= 6.1.3.1)
22
- activesupport (= 6.1.3.1)
23
- mail (>= 2.7.1)
24
- actionmailer (6.1.3.1)
25
- actionpack (= 6.1.3.1)
26
- actionview (= 6.1.3.1)
27
- activejob (= 6.1.3.1)
28
- activesupport (= 6.1.3.1)
29
- mail (~> 2.5, >= 2.5.4)
30
- rails-dom-testing (~> 2.0)
31
- actionpack (6.1.3.1)
32
- actionview (= 6.1.3.1)
33
- activesupport (= 6.1.3.1)
34
- rack (~> 2.0, >= 2.0.9)
35
- rack-test (>= 0.6.3)
36
- rails-dom-testing (~> 2.0)
37
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
- actiontext (6.1.3.1)
39
- actionpack (= 6.1.3.1)
40
- activerecord (= 6.1.3.1)
41
- activestorage (= 6.1.3.1)
42
- activesupport (= 6.1.3.1)
43
- nokogiri (>= 1.8.5)
44
- actionview (6.1.3.1)
45
- activesupport (= 6.1.3.1)
46
- builder (~> 3.1)
47
- erubi (~> 1.4)
48
- rails-dom-testing (~> 2.0)
49
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
50
- activejob (6.1.3.1)
51
- activesupport (= 6.1.3.1)
52
- globalid (>= 0.3.6)
53
- activemodel (6.1.3.1)
54
- activesupport (= 6.1.3.1)
55
- activerecord (6.1.3.1)
56
- activemodel (= 6.1.3.1)
57
- activesupport (= 6.1.3.1)
58
- activestorage (6.1.3.1)
59
- actionpack (= 6.1.3.1)
60
- activejob (= 6.1.3.1)
61
- activerecord (= 6.1.3.1)
62
- activesupport (= 6.1.3.1)
63
- marcel (~> 1.0.0)
64
- mini_mime (~> 1.0.2)
65
- activesupport (6.1.3.1)
66
- concurrent-ruby (~> 1.0, >= 1.0.2)
67
- i18n (>= 1.6, < 2)
68
- minitest (>= 5.1)
69
- tzinfo (~> 2.0)
70
- zeitwerk (~> 2.3)
71
- builder (3.2.4)
72
- byebug (11.1.1)
73
- coderay (1.1.2)
74
- concurrent-ruby (1.1.8)
75
- crass (1.0.6)
76
- diff-lcs (1.3)
77
- erubi (1.10.0)
78
- factory_bot (6.1.0)
79
- activesupport (>= 5.0.0)
80
- factory_bot_rails (6.1.0)
81
- factory_bot (~> 6.1.0)
82
- railties (>= 5.0.0)
83
- faker (2.10.2)
84
- i18n (>= 1.6, < 2)
85
- globalid (0.4.2)
86
- activesupport (>= 4.2.0)
87
- i18n (1.8.10)
88
- concurrent-ruby (~> 1.0)
89
- jsonapi-serializer (2.2.0)
90
- activesupport (>= 4.2)
91
- loofah (2.9.1)
92
- crass (~> 1.0.2)
93
- nokogiri (>= 1.5.9)
94
- mail (2.7.1)
95
- mini_mime (>= 0.1.1)
96
- marcel (1.0.1)
97
- method_source (0.9.2)
98
- mini_mime (1.0.3)
99
- mini_portile2 (2.5.1)
100
- minitest (5.14.4)
101
- nio4r (2.5.7)
102
- nokogiri (1.11.3)
103
- mini_portile2 (~> 2.5.0)
104
- racc (~> 1.4)
105
- pry (0.12.2)
106
- coderay (~> 1.1.0)
107
- method_source (~> 0.9.0)
108
- pry-byebug (3.8.0)
109
- byebug (~> 11.0)
110
- pry (~> 0.10)
111
- racc (1.5.2)
112
- rack (2.2.3)
113
- rack-test (1.1.0)
114
- rack (>= 1.0, < 3)
115
- rails (6.1.3.1)
116
- actioncable (= 6.1.3.1)
117
- actionmailbox (= 6.1.3.1)
118
- actionmailer (= 6.1.3.1)
119
- actionpack (= 6.1.3.1)
120
- actiontext (= 6.1.3.1)
121
- actionview (= 6.1.3.1)
122
- activejob (= 6.1.3.1)
123
- activemodel (= 6.1.3.1)
124
- activerecord (= 6.1.3.1)
125
- activestorage (= 6.1.3.1)
126
- activesupport (= 6.1.3.1)
127
- bundler (>= 1.15.0)
128
- railties (= 6.1.3.1)
129
- sprockets-rails (>= 2.0.0)
130
- rails-controller-testing (1.0.4)
131
- actionpack (>= 5.0.1.x)
132
- actionview (>= 5.0.1.x)
133
- activesupport (>= 5.0.1.x)
134
- rails-dom-testing (2.0.3)
135
- activesupport (>= 4.2.0)
136
- nokogiri (>= 1.6)
137
- rails-html-sanitizer (1.3.0)
138
- loofah (~> 2.3)
139
- railties (6.1.3.1)
140
- actionpack (= 6.1.3.1)
141
- activesupport (= 6.1.3.1)
142
- method_source
143
- rake (>= 0.8.7)
144
- thor (~> 1.0)
145
- rake (13.0.3)
146
- rspec-core (3.9.1)
147
- rspec-support (~> 3.9.1)
148
- rspec-expectations (3.9.0)
149
- diff-lcs (>= 1.2.0, < 2.0)
150
- rspec-support (~> 3.9.0)
151
- rspec-mocks (3.9.1)
152
- diff-lcs (>= 1.2.0, < 2.0)
153
- rspec-support (~> 3.9.0)
154
- rspec-rails (3.9.0)
155
- actionpack (>= 3.0)
156
- activesupport (>= 3.0)
157
- railties (>= 3.0)
158
- rspec-core (~> 3.9.0)
159
- rspec-expectations (~> 3.9.0)
160
- rspec-mocks (~> 3.9.0)
161
- rspec-support (~> 3.9.0)
162
- rspec-support (3.9.2)
163
- sprockets (4.0.2)
164
- concurrent-ruby (~> 1.0)
165
- rack (> 1, < 3)
166
- sprockets-rails (3.2.2)
167
- actionpack (>= 4.0)
168
- activesupport (>= 4.0)
169
- sprockets (>= 3.0.0)
170
- sqlite3 (1.4.2)
171
- thor (1.1.0)
172
- tzinfo (2.0.4)
173
- concurrent-ruby (~> 1.0)
174
- websocket-driver (0.7.3)
175
- websocket-extensions (>= 0.1.0)
176
- websocket-extensions (0.1.5)
177
- zeitwerk (2.4.2)
178
-
179
- PLATFORMS
180
- ruby
181
-
182
- DEPENDENCIES
183
- bundler (~> 2.0)
184
- factory_bot_rails
185
- faker
186
- json_apiable!
187
- pry
188
- pry-byebug
189
- rails
190
- rails-controller-testing
191
- rake (~> 13.0)
192
- rspec-rails (~> 3.9)
193
- sqlite3
194
-
195
- BUNDLED WITH
196
- 2.1.4