introspective_grape 0.2.6 → 0.2.7
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 +4 -4
- data/.gitignore +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +13 -5
- data/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/gemfiles/2.0.0-Gemfile +22 -0
- data/introspective_grape.gemspec +6 -5
- data/lib/introspective_grape/camel_snake.rb +18 -6
- data/lib/introspective_grape/validators.rb +2 -2
- data/lib/introspective_grape/version.rb +1 -1
- data/spec/dummy/Gemfile +14 -1
- data/spec/dummy/app/api/dummy_api.rb +12 -6
- data/spec/dummy/config/application.rb +1 -1
- data/spec/requests/company_api_spec.rb +2 -2
- data/spec/requests/swagger_spec.rb +8 -2
- data/spec/support/blueprints.rb +1 -1
- metadata +38 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8dc4cc268e2946259654e5b44eb1841afb3a2a1
|
4
|
+
data.tar.gz: 4110a9992a24fb544a58c3185abce336694499f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ed73bf254659358fba6e9635ed8bf4d38fbba2349e42a9636bd7a99b38d87f854ee05c6fb3430b94c899f641ebd62f31189a957d86ab1b55de60b3e2fff1872
|
7
|
+
data.tar.gz: aa5b91683e4f66eb1de93cb08fb537127aa3bc109c4388d6c60b266edbf1ca079527fbcbaa2d024e834e2d1cb3cf66bef6a9757bcd0f1a44e56b69609a9c5734
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.0
|
data/.travis.yml
CHANGED
@@ -8,14 +8,21 @@ script:
|
|
8
8
|
|
9
9
|
rvm:
|
10
10
|
- 2.3.0
|
11
|
-
- 2.2
|
12
|
-
- 2.1
|
13
|
-
- 2.0.0
|
14
|
-
- jruby-9.0.4.0
|
11
|
+
- 2.2.6
|
15
12
|
- ruby-head
|
16
13
|
- jruby-head
|
17
|
-
|
18
14
|
matrix:
|
15
|
+
include:
|
16
|
+
# We'll have to back up to grape-swagger 0.11 for earlier rubies.
|
17
|
+
- rvm: 2.0.0
|
18
|
+
gemfile: gemfiles/2.0.0-Gemfile
|
19
|
+
- rvm: 2.1.0
|
20
|
+
gemfile: gemfiles/2.0.0-Gemfile
|
21
|
+
- rvm: 2.2.0
|
22
|
+
gemfile: gemfiles/2.0.0-Gemfile
|
23
|
+
- rvm: jruby-9.0.4.0
|
24
|
+
gemfile: gemfiles/2.0.0-Gemfile
|
25
|
+
|
19
26
|
allow_failures:
|
20
27
|
- rvm: ruby-head
|
21
28
|
- rvm: jruby-head
|
@@ -25,6 +32,7 @@ env:
|
|
25
32
|
- RAILS=3.2.22
|
26
33
|
- RAILS=4.1.13
|
27
34
|
- RAILS=4.2.5.1
|
35
|
+
- RAILS=5.0.1
|
28
36
|
- RAILS=master
|
29
37
|
global:
|
30
38
|
- JRUBY_OPTS="-J-Xmx1024m --debug"
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -152,7 +152,7 @@ class MyModelAPI < IntrospectiveGrape::API
|
|
152
152
|
end
|
153
153
|
```
|
154
154
|
|
155
|
-
Multiple values can be specified at once for Integer attributes that end in "id" (i.e. conventional primary and foreign keys)
|
155
|
+
Multiple values can be specified at once for Integer attributes that end in "id" (i.e. conventional primary and foreign keys) by passing a comma separated list of IDs.
|
156
156
|
|
157
157
|
For timestamp attributes it will generate `<name_of_timestamp>_start` and `<name_of_timestamp>_end` constraints.
|
158
158
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in introspective_grape.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
|
7
|
+
gemspec :path => '../'
|
8
|
+
|
9
|
+
gem 'grape', '0.16.2'
|
10
|
+
gem 'grape-swagger', '~> 0.11.0'
|
11
|
+
gem 'nokogiri', '~> 1.6.8'
|
12
|
+
gem 'coveralls', require: false
|
13
|
+
|
14
|
+
# Declare any dependencies that are still in development here instead of in
|
15
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
16
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
17
|
+
# your gem to rubygems.org.
|
18
|
+
|
19
|
+
group :development,:test do
|
20
|
+
gem 'rspec'
|
21
|
+
# gem 'byebug'
|
22
|
+
end
|
data/introspective_grape.gemspec
CHANGED
@@ -22,12 +22,13 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.add_dependency "rails", '>= 3.0.0', '< 5.0.0'
|
24
24
|
|
25
|
-
s.add_dependency 'grape'
|
26
|
-
s.add_dependency 'grape-entity'
|
27
|
-
s.add_dependency 'grape-swagger'
|
28
|
-
s.add_dependency '
|
25
|
+
s.add_dependency 'grape' #, '~> 0.16.2'
|
26
|
+
s.add_dependency 'grape-entity' #, '< 0.5.0'
|
27
|
+
s.add_dependency 'grape-swagger' #, '~>0.11.0'
|
28
|
+
s.add_dependency 'kaminari', '< 1.0' # There's a version 1.0.0 out there that breaks everything
|
29
|
+
s.add_dependency 'grape-kaminari'
|
29
30
|
s.add_dependency 'pundit'
|
30
|
-
s.add_dependency 'camel_snake_keys'
|
31
|
+
s.add_dependency 'camel_snake_keys'
|
31
32
|
|
32
33
|
if RUBY_PLATFORM == 'java'
|
33
34
|
#s.add_development_dependency "jdbc-sqlite3"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'grape-swagger'
|
2
2
|
require 'active_support' #/core_ext/module/aliasing'
|
3
3
|
require 'camel_snake_keys'
|
4
|
-
|
5
4
|
if IntrospectiveGrape.config.camelize_parameters
|
6
5
|
# Camelize the parameters in the swagger documentation.
|
7
6
|
if Gem::Version.new( GrapeSwagger::VERSION ) <= Gem::Version.new('0.11.0')
|
@@ -31,10 +30,23 @@ if IntrospectiveGrape.config.camelize_parameters
|
|
31
30
|
end
|
32
31
|
end
|
33
32
|
else Gem::Version.new( GrapeSwagger::VERSION ) > Gem::Version.new('0.11.0')
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
module GrapeSwagger
|
34
|
+
module DocMethods
|
35
|
+
def self.extended(mod)
|
36
|
+
# Do not camelize the grape-swagger documentation endpoints.
|
37
|
+
mod.formatter :json, Grape::Formatter::Json
|
38
|
+
end
|
39
|
+
class ParseParams
|
40
|
+
class << self
|
41
|
+
def call_with_camelized(*args)
|
42
|
+
param = call_without_camelized(*args)
|
43
|
+
param[:name] = param[:name].camelize(:lower).gsub(/Destroy/, '_destroy')
|
44
|
+
param
|
45
|
+
end
|
46
|
+
alias_method_chain :call, :camelized
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
38
51
|
end
|
39
|
-
|
40
52
|
end
|
@@ -16,7 +16,7 @@ module Grape::Validators
|
|
16
16
|
begin
|
17
17
|
raise unless JSON.parse( params[field] ).kind_of? Array
|
18
18
|
rescue
|
19
|
-
fail Grape::Exceptions::Validation, params: [@scope.full_name(field)], message: 'must be valid JSON array!'
|
19
|
+
fail Grape::Exceptions::Validation, params: [@scope.full_name(field)], message: 'must be a valid JSON array!'
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -26,7 +26,7 @@ module Grape::Validators
|
|
26
26
|
begin
|
27
27
|
raise unless JSON.parse( params[field] ).kind_of? Hash
|
28
28
|
rescue
|
29
|
-
fail Grape::Exceptions::Validation, params: [@scope.full_name(field)], message: 'must be valid JSON hash!'
|
29
|
+
fail Grape::Exceptions::Validation, params: [@scope.full_name(field)], message: 'must be a valid JSON hash!'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
data/spec/dummy/Gemfile
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
+
gem 'rails', '<5.0'
|
3
|
+
|
4
|
+
#gem 'byebug'
|
5
|
+
|
6
|
+
gem 'grape'
|
7
|
+
gem 'grape-entity'
|
8
|
+
gem 'grape-swagger'
|
2
9
|
gem 'grape-kaminari'
|
10
|
+
|
3
11
|
gem 'pundit'
|
4
|
-
#gem 'byebug'
|
5
12
|
gem 'paperclip'
|
6
13
|
gem 'delayed_paperclip'
|
14
|
+
gem 'devise-async'
|
15
|
+
gem 'activerecord-tableless'
|
16
|
+
|
17
|
+
gem 'camel_snake_keys'
|
18
|
+
|
19
|
+
gem 'sqlite3'
|
@@ -46,12 +46,18 @@ class DummyAPI < Grape::API
|
|
46
46
|
# configure grape-swagger to auto-generate swagger docs
|
47
47
|
protocol = Rails.application.config.force_ssl ? 'https' : 'http'
|
48
48
|
add_swagger_documentation({
|
49
|
-
base_path: "
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
base_path: "/api",
|
50
|
+
doc_version: 'v1',
|
51
|
+
hide_documentation_path: true,
|
52
|
+
format: :json,
|
53
|
+
hide_format: true,
|
54
|
+
security_definitions: {
|
55
|
+
api_key: {
|
56
|
+
type: "apiKey",
|
57
|
+
name: "api_key",
|
58
|
+
in: "header"
|
59
|
+
}
|
60
|
+
}
|
55
61
|
})
|
56
62
|
|
57
63
|
end
|
@@ -93,12 +93,12 @@ describe Dummy::CompanyAPI, type: :request do
|
|
93
93
|
|
94
94
|
it "should validate json array parameters" do
|
95
95
|
put "/api/v1/companies/#{company.id}", { widgets: "[garbage[\"A\",\"B\"]" }
|
96
|
-
json["error"].should eq "widgets must be valid JSON array!"
|
96
|
+
json["error"].should eq "widgets must be a valid JSON array!"
|
97
97
|
end
|
98
98
|
|
99
99
|
it "should validate json hash parameters" do
|
100
100
|
put "/api/v1/companies/#{company.id}", { sprockets: "{\"foo\":\"bar\"}garbage}" }
|
101
|
-
json["error"].should eq "sprockets must be valid JSON hash!"
|
101
|
+
json["error"].should eq "sprockets must be a valid JSON hash!"
|
102
102
|
end
|
103
103
|
|
104
104
|
end
|
@@ -7,8 +7,14 @@ describe GrapeSwagger, type: :request do
|
|
7
7
|
get '/api/v1/swagger_doc'
|
8
8
|
response.should be_success
|
9
9
|
json = JSON.parse( response.body )
|
10
|
-
|
10
|
+
if Gem::Version.new( GrapeSwagger::VERSION ) <= Gem::Version.new('0.11.0')
|
11
|
+
json['apiVersion'].should == '0.1'
|
12
|
+
else
|
13
|
+
json['paths'].map {|p| p[1].values }.flatten.map{|p| p['parameters']}.flatten.compact.map{|p| p['name']}.each do |name|
|
14
|
+
name.should eq name.camelize(:lower).gsub(/Destroy/,'_destroy')
|
15
|
+
end
|
16
|
+
end
|
11
17
|
end
|
12
|
-
end
|
13
18
|
|
19
|
+
end
|
14
20
|
end
|
data/spec/support/blueprints.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.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:
|
11
|
+
date: 2017-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -34,58 +34,72 @@ dependencies:
|
|
34
34
|
name: grape
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0
|
39
|
+
version: '0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0
|
46
|
+
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: grape-entity
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0
|
53
|
+
version: '0'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0
|
60
|
+
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: grape-swagger
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0
|
67
|
+
version: '0'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: kaminari
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "<"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.0'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: grape-kaminari
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
|
-
- - "
|
93
|
+
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0
|
95
|
+
version: '0'
|
82
96
|
type: :runtime
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
|
-
- - "
|
100
|
+
- - ">="
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0
|
102
|
+
version: '0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
104
|
name: pundit
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,16 +118,16 @@ dependencies:
|
|
104
118
|
name: camel_snake_keys
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
|
-
- - "
|
121
|
+
- - ">="
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0
|
123
|
+
version: '0'
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
|
-
- - "
|
128
|
+
- - ">="
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: 0
|
130
|
+
version: '0'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
132
|
name: sqlite3
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -266,6 +280,7 @@ files:
|
|
266
280
|
- app/models/.keep
|
267
281
|
- app/views/.keep
|
268
282
|
- bin/rails
|
283
|
+
- gemfiles/2.0.0-Gemfile
|
269
284
|
- introspective_grape.gemspec
|
270
285
|
- lib/.DS_Store
|
271
286
|
- lib/introspective_grape.rb
|
@@ -444,7 +459,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
444
459
|
version: '0'
|
445
460
|
requirements: []
|
446
461
|
rubyforge_project:
|
447
|
-
rubygems_version: 2.
|
462
|
+
rubygems_version: 2.6.8
|
448
463
|
signing_key:
|
449
464
|
specification_version: 4
|
450
465
|
summary: Introspectively configure deeply nested RESTful Grape APIs for ActiveRecord
|