grape-swagger-entity 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -3
- data/CHANGELOG.md +7 -0
- data/lib/grape-swagger/entity/parser.rb +29 -16
- data/lib/grape-swagger/entity/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc998b981e77b49cc07ee0c8556ae90cd9039e7f
|
4
|
+
data.tar.gz: b41b339f7804f2b95234a72da9db8d8545a54e78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 040cebbf6a2a1a884d2a767655c61c4255d298a5e78212131a8fd70e576f332480cb5e4417660162e8cfabebf63abad6e265f166a330a1b2e7228ce33113abbf
|
7
|
+
data.tar.gz: 304e5f306ab9e0cfd43fb293c0604d88db110790ab6aa262d50ce27dafa9e320695bcb9a55083d5b734578b2f7e9273f28375bd0195ae91ca6bc957fe2764aa8
|
data/.travis.yml
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
sudo: false
|
4
|
+
|
1
5
|
before_install:
|
2
6
|
- gem update --system
|
3
7
|
- gem install bundler
|
@@ -6,9 +10,8 @@ after_success:
|
|
6
10
|
- bundle exec danger
|
7
11
|
|
8
12
|
rvm:
|
9
|
-
- 2.4.
|
10
|
-
- 2.3.
|
11
|
-
- 2.2.6
|
13
|
+
- 2.4.2
|
14
|
+
- 2.3.5
|
12
15
|
|
13
16
|
env:
|
14
17
|
- GRAPE_ENTITY=0.5.2
|
@@ -18,6 +21,8 @@ matrix:
|
|
18
21
|
fast_finish: true
|
19
22
|
|
20
23
|
include:
|
24
|
+
- rvm: 2.2.8
|
25
|
+
env:
|
21
26
|
- rvm: ruby-head
|
22
27
|
env:
|
23
28
|
- rvm: jruby-head
|
@@ -26,6 +31,7 @@ matrix:
|
|
26
31
|
env:
|
27
32
|
|
28
33
|
allow_failures:
|
34
|
+
- rvm: 2.2.8
|
29
35
|
- rvm: ruby-head
|
30
36
|
- rvm: jruby-head
|
31
37
|
- rvm: rbx-2
|
data/CHANGELOG.md
CHANGED
@@ -8,6 +8,13 @@
|
|
8
8
|
|
9
9
|
* Your contribution here.
|
10
10
|
|
11
|
+
### 0.2.3 (November 19, 2017)
|
12
|
+
|
13
|
+
#### Fixes
|
14
|
+
|
15
|
+
* [#30](https://github.com/ruby-grape/grape-swagger-entity/pull/30): Fix nested exposures with an alias - [@Kukunin](https://github.com/Kukunin).
|
16
|
+
* [#31](https://github.com/ruby-grape/grape-swagger-entity/pull/31): Respect `required: true` for nested attributes as well - [@Kukunin](https://github.com/Kukunin).
|
17
|
+
|
11
18
|
### 0.2.2 (November 3, 2017)
|
12
19
|
|
13
20
|
#### Features
|
@@ -27,19 +27,20 @@ module GrapeSwagger
|
|
27
27
|
params.each_with_object({}) do |(entity_name, entity_options), memo|
|
28
28
|
next if entity_options.fetch(:documentation, {}).fetch(:in, nil).to_s == 'header'
|
29
29
|
|
30
|
-
|
30
|
+
final_entity_name = entity_options.fetch(:as, entity_name)
|
31
31
|
documentation = entity_options[:documentation]
|
32
32
|
|
33
|
-
memo[
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
memo[final_entity_name] = if entity_options[:nesting]
|
34
|
+
parse_nested(entity_name, entity_options, parent_model)
|
35
|
+
else
|
36
|
+
attribute_parser.call(entity_options)
|
37
|
+
end
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
memo[
|
39
|
+
next unless documentation
|
40
|
+
if documentation[:read_only]
|
41
|
+
memo[final_entity_name][:read_only] = documentation[:read_only].to_s == 'true'
|
42
42
|
end
|
43
|
+
memo[final_entity_name][:description] = documentation[:desc] if documentation[:desc]
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
@@ -54,6 +55,8 @@ module GrapeSwagger
|
|
54
55
|
memo[value.attribute] = value.send(:options)
|
55
56
|
end
|
56
57
|
|
58
|
+
required = required_params(params)
|
59
|
+
|
57
60
|
properties = parse_grape_entity_params(params, nested_entity)
|
58
61
|
is_a_collection = entity_options[:documentation].is_a?(Hash) &&
|
59
62
|
entity_options[:documentation][:type].to_s.casecmp('array').zero?
|
@@ -61,20 +64,30 @@ module GrapeSwagger
|
|
61
64
|
if is_a_collection
|
62
65
|
{
|
63
66
|
type: :array,
|
64
|
-
items: {
|
67
|
+
items: with_required({
|
65
68
|
type: :object,
|
66
69
|
properties: properties
|
67
|
-
},
|
68
|
-
description: entity_options[:desc] || ''
|
70
|
+
}, required)
|
69
71
|
}
|
70
72
|
else
|
71
|
-
{
|
73
|
+
with_required({
|
72
74
|
type: :object,
|
73
|
-
properties: properties
|
74
|
-
|
75
|
-
}
|
75
|
+
properties: properties
|
76
|
+
}, required)
|
76
77
|
end
|
77
78
|
end
|
79
|
+
|
80
|
+
def required_params(params)
|
81
|
+
params.select { |_, options| options.fetch(:documentation, {}).fetch(:required, false) }
|
82
|
+
.map { |(key, options)| [options.fetch(:as, key), options] }
|
83
|
+
.map(&:first)
|
84
|
+
end
|
85
|
+
|
86
|
+
def with_required(hash, required)
|
87
|
+
return hash if required.empty?
|
88
|
+
hash[:required] = required
|
89
|
+
hash
|
90
|
+
end
|
78
91
|
end
|
79
92
|
end
|
80
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape-swagger-entity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill Zaitsev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape-entity
|