introspective_grape 0.5.4 → 0.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +17 -1
- data/introspective_grape.gemspec +2 -2
- data/lib/introspective_grape/api.rb +9 -4
- data/lib/introspective_grape/filters.rb +1 -1
- data/lib/introspective_grape/validators.rb +5 -3
- data/lib/introspective_grape/version.rb +1 -1
- data/spec/dummy/Gemfile +3 -3
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d29e073d96e9a6f2569eeaec65ece289f344fd5f0b6ea88a0dfb345d36d51052
|
4
|
+
data.tar.gz: dac77dd6bc6812de00ec06ee5299c5cea5ff0f3539a304e6a1d1335f72e69f36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 118befdc8fca693dd91610d8c0ecff86ca2e297cdb1b3817384b1fa78958a5949f1d252cc70eadf2187bee87080fb9949382e656b6765f259f4d23bba7fd2c47
|
7
|
+
data.tar.gz: 21f3339a6e874bca7d94fa3efcd92812afbbc0e9b74371cafc8eb3e1644334930671ee59841a13237998272acc06954916a5b09ccd9eb760df38c8b3a28557f9
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.3
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,23 @@
|
|
1
1
|
|
2
|
-
0.5.
|
2
|
+
0.5.7 03/10/2022
|
3
3
|
================
|
4
4
|
|
5
|
+
Handle the switch from Grape::Validations::Base to Grape::Validations::Validators::Base.
|
6
|
+
|
7
|
+
0.5.6 03/09/2022
|
8
|
+
================
|
9
|
+
|
10
|
+
On the DELETE endpoint the primary key with its type was undeclared, creating conflicts with user-defined delete endpoints.
|
11
|
+
|
12
|
+
0.5.5 02/24/2022
|
13
|
+
================
|
14
|
+
|
15
|
+
Update the local ruby in the gem to 2.7.3 to clear security warning cruft.
|
16
|
+
|
17
|
+
Sanitize some sql.
|
18
|
+
|
19
|
+
Target the still-supported 'kt-paperclip' in the gemspec (many pardons while we're planning the switch over to activestorage support).
|
20
|
+
|
5
21
|
Fix bug from looking for the ActiveRecord columns_hash on non-ActiveRecord objects.
|
6
22
|
|
7
23
|
0.5.2 02/07/2022
|
data/introspective_grape.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.files = `git ls-files`.split("\n").sort
|
23
23
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
24
24
|
|
25
|
-
s.required_ruby_version = '
|
25
|
+
s.required_ruby_version = '> 2.5'
|
26
26
|
|
27
27
|
s.add_runtime_dependency 'rails', '~> 5.2'
|
28
28
|
s.add_runtime_dependency 'schema_validations'
|
@@ -57,7 +57,7 @@ Gem::Specification.new do |s|
|
|
57
57
|
s.add_development_dependency 'machinist_redux'
|
58
58
|
|
59
59
|
# dummy app dependencies
|
60
|
-
s.add_development_dependency 'paperclip'
|
60
|
+
s.add_development_dependency 'kt-paperclip'
|
61
61
|
s.add_development_dependency 'rufus-mnemo'
|
62
62
|
s.add_development_dependency 'devise'
|
63
63
|
end
|
@@ -99,13 +99,15 @@ module IntrospectiveGrape
|
|
99
99
|
# As routes are nested keep track of the routes, we are preventing siblings from
|
100
100
|
# appending to the routes array here:
|
101
101
|
routes = build_routes(routes, model)
|
102
|
-
define_routes(routes, whitelist)
|
103
102
|
|
104
103
|
# Top level declaration of the Grape::API namespace for the resource:
|
105
104
|
resource routes.first.name.pluralize do
|
106
|
-
# yield to
|
105
|
+
# yield to prepend user-defined routes under the root namespace first,
|
107
106
|
yield if block_given?
|
108
107
|
end
|
108
|
+
|
109
|
+
# Then define IntrospectiveGrape's routes:
|
110
|
+
define_routes(routes, whitelist)
|
109
111
|
end
|
110
112
|
|
111
113
|
def define_routes(routes, api_params)
|
@@ -209,12 +211,15 @@ module IntrospectiveGrape
|
|
209
211
|
end
|
210
212
|
|
211
213
|
# rubocop:enable Metrics/AbcSize
|
212
|
-
def define_destroy(dsl, routes,
|
214
|
+
def define_destroy(dsl, routes, model, _api_params)
|
213
215
|
klass = routes.first.klass
|
214
|
-
name
|
216
|
+
name = routes.last.name.singularize
|
215
217
|
dsl.desc "destroy a #{name}" do
|
216
218
|
detail klass.destroy_documentation(name)
|
217
219
|
end
|
220
|
+
dsl.params do
|
221
|
+
requires routes.last.swagger_key, type: klass.param_type(model, model.primary_key)
|
222
|
+
end
|
218
223
|
dsl.delete ":#{routes.last.swagger_key}" do
|
219
224
|
authorize @model, :destroy?
|
220
225
|
present status: (klass.find_leaf(routes, @model, params).destroy ? true : false)
|
@@ -91,7 +91,7 @@ module IntrospectiveGrape
|
|
91
91
|
|
92
92
|
if timestamp_filter(klass, model, field)
|
93
93
|
op = field.ends_with?('_start') ? '>=' : '<='
|
94
|
-
records.where("#{timestamp_filter(klass, model, field)} #{op} ?", Time.zone.parse(params[field]))
|
94
|
+
records.where(ActiveRecord::Base.sanitize_sql_array(["#{timestamp_filter(klass, model, field)} #{op} ?", Time.zone.parse(params[field])]))
|
95
95
|
elsif model.respond_to?("#{field}=")
|
96
96
|
records.send("#{field}=", params[field])
|
97
97
|
else
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'grape/validations'
|
2
2
|
module Grape
|
3
3
|
module Validators
|
4
|
-
|
4
|
+
# Validations::Base becomes Validators::Base somewhere between 1.6.0 and 1.6.2
|
5
|
+
validation_class = defined?(Grape::Validations::Base) ? Grape::Validations::Base : Grape::Validations::Validators::Base
|
6
|
+
class Json < validation_class
|
5
7
|
def validate_param!(field, params)
|
6
8
|
begin
|
7
9
|
JSON.parse( params[field] )
|
@@ -11,7 +13,7 @@ module Grape
|
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
14
|
-
class JsonArray <
|
16
|
+
class JsonArray < validation_class
|
15
17
|
def validate_param!(field, params)
|
16
18
|
begin
|
17
19
|
raise unless JSON.parse( params[field] ).is_a? Array
|
@@ -21,7 +23,7 @@ module Grape
|
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
|
-
class JsonHash <
|
26
|
+
class JsonHash < validation_class
|
25
27
|
def validate_param!(field, params)
|
26
28
|
begin
|
27
29
|
raise unless JSON.parse( params[field] ).is_a? Hash
|
data/spec/dummy/Gemfile
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
-
gem 'rails', '5.2.6'
|
2
|
+
gem 'rails', '5.2.6.2'
|
3
3
|
|
4
4
|
gem 'byebug'
|
5
5
|
gem 'camel_snake_keys'
|
6
6
|
|
7
7
|
gem 'devise'
|
8
8
|
gem 'delayed_paperclip'
|
9
|
-
|
9
|
+
gem 'kt-paperclip'
|
10
10
|
|
11
11
|
gem 'grape'
|
12
12
|
gem 'grape-entity'
|
13
13
|
gem 'grape-kaminari'
|
14
14
|
gem 'grape-swagger'
|
15
15
|
gem 'grape-swagger-entity'
|
16
|
-
gem 'introspective_grape'
|
16
|
+
gem 'introspective_grape' #, path: '~/Dropbox/contrib/introspective_grape'
|
17
17
|
|
18
18
|
gem 'paperclip'
|
19
19
|
gem 'pundit'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: introspective_grape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Buermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -291,7 +291,7 @@ dependencies:
|
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: '0'
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
|
-
name: paperclip
|
294
|
+
name: kt-paperclip
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
296
296
|
requirements:
|
297
297
|
- - ">="
|
@@ -531,7 +531,7 @@ require_paths:
|
|
531
531
|
- lib
|
532
532
|
required_ruby_version: !ruby/object:Gem::Requirement
|
533
533
|
requirements:
|
534
|
-
- - "
|
534
|
+
- - ">"
|
535
535
|
- !ruby/object:Gem::Version
|
536
536
|
version: '2.5'
|
537
537
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -540,8 +540,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
540
540
|
- !ruby/object:Gem::Version
|
541
541
|
version: '0'
|
542
542
|
requirements: []
|
543
|
-
|
544
|
-
rubygems_version: 2.7.3
|
543
|
+
rubygems_version: 3.1.6
|
545
544
|
signing_key:
|
546
545
|
specification_version: 4
|
547
546
|
summary: Quickly configure Grape APIs around your database schema and models.
|