grape-swagger-entity 0.3.0 → 0.4.0

This diff has not been reviewed by any users.
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: 05c52de504600d57fb8bb41dff26265beb90d32e
4
- data.tar.gz: 6b829aae12775c2f27521cf08be88f56298158d5
2
+ SHA256:
3
+ metadata.gz: 9cbc9a4f5350f907024319ec60d6bebcf58c1d9a9fbe0a87157eb521f5d90c27
4
+ data.tar.gz: d70650e560a98a5c8e6299136146796d87bb8e124944c2b09603ddcab415085a
5
5
  SHA512:
6
- metadata.gz: 9dc4d2973ef5f678eddce41c1c5a393f26267cf177b6f2973fd804d278adaa0c5c065cd4ac7b5a8006d561a896350064f96f10043f144071d51e1b402279dcc9
7
- data.tar.gz: a5b0c18af91a1c16c6f8c2d834950dcc82885e375c29b3b6c3547d7481718c31b59fb157aa233e0a49ad6eb9e292001c6a241e2a1e933e092ea872120dd1f16d
6
+ metadata.gz: 4fffce9cc2ae49583807c9e02a5ed6d0c6fdbd1e3acc2f4816868b292fb8ae0e77161bd4736dcb2d91e30633a814cd8fd31c2f21af9fec12cc4cec8243bb5ce1
7
+ data.tar.gz: 2c5cdf2184fefbd92fda6b7f65d95d31f0c331e225be2439b5fa2f6d711a7754890271b7a41b06cdd36c44d3bcace9b836cd727c93b21892e6ae9651badb712a
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .ruby-gemset
11
+ .ruby-version
@@ -18,8 +18,8 @@ Metrics/MethodLength:
18
18
  Exclude:
19
19
  - spec/**/*
20
20
 
21
- Style/FileName:
21
+ Naming/FileName:
22
22
  Enabled: false
23
23
 
24
- Style/IndentHash:
24
+ Layout/IndentFirstHashElement:
25
25
  EnforcedStyle: consistent
@@ -10,18 +10,19 @@ after_success:
10
10
  - bundle exec danger
11
11
 
12
12
  rvm:
13
- - 2.4.2
14
- - 2.3.5
13
+ - 2.4.5
14
+ - 2.5.3
15
+ - 2.6.0
15
16
 
16
17
  env:
17
- - GRAPE_ENTITY=0.5.2
18
18
  - GRAPE_ENTITY=0.6.1
19
+ - GRAPE_ENTITY=0.7.1
19
20
 
20
21
  matrix:
21
22
  fast_finish: true
22
23
 
23
24
  include:
24
- - rvm: 2.2.8
25
+ - rvm: 2.3.8
25
26
  env:
26
27
  - rvm: ruby-head
27
28
  env:
@@ -31,7 +32,7 @@ matrix:
31
32
  env:
32
33
 
33
34
  allow_failures:
34
- - rvm: 2.2.8
35
+ - rvm: 2.3.8
35
36
  - rvm: ruby-head
36
37
  - rvm: jruby-head
37
38
  - rvm: rbx-2
@@ -4,10 +4,45 @@
4
4
 
5
5
  * Your contribution here.
6
6
 
7
- #### Fixes
7
+ #### Features
8
8
 
9
9
  * Your contribution here.
10
10
 
11
+ ### 0.4.0 (May 30, 2020)
12
+
13
+ #### Features
14
+
15
+ * [#49](https://github.com/ruby-grape/grape-swagger-entity/pull/49): Bumped minimal required version of grape-swagger to 1.0.0 - [@Bugagazavr](https://github.com/Bugagazavr).
16
+ * [#48](https://github.com/ruby-grape/grape-swagger-entity/pull/48): Add support for extensions - [@MaximeRDY](https://github.com/MaximeRDY).
17
+
18
+ #### Fixes
19
+
20
+ * [#46](https://github.com/ruby-grape/grape-swagger-entity/pull/46): Fixed issue where a boolean example value of false would not display in swagger file - [@drewnichols](https://github.com/drewnichols).
21
+
22
+ ### 0.3.4 (January 9, 2020)
23
+
24
+ #### Features
25
+
26
+ * [#40](https://github.com/ruby-grape/grape-swagger-entity/pull/40): Add support for minLength and maxLength - [@fotos](https://github.com/fotos).
27
+
28
+ ### 0.3.3 (Fabruary 22, 2019)
29
+
30
+ #### Features
31
+
32
+ * [#39](https://github.com/ruby-grape/grape-swagger-entity/pull/39): Fix to avoid conflict with polymorphic model - [@kinoppyd](https://github.com/kinoppyd).
33
+
34
+ ### 0.3.2 (January 15, 2019)
35
+
36
+ #### Features
37
+
38
+ * [#38](https://github.com/ruby-grape/grape-swagger-entity/pull/38): Added support for hidden option for documentation - [@vitoravelino](https://github.com/vitoravelino).
39
+
40
+ ### 0.3.1 (November 26, 2018)
41
+
42
+ #### Features
43
+
44
+ * [#37](https://github.com/ruby-grape/grape-swagger-entity/pull/37): Add support for minItems, maxItems and uniqueItems - [@fotos](https://github.com/fotos).
45
+
11
46
  ### 0.3.0 (August 22, 2018)
12
47
 
13
48
  #### Features
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ group :development, :test do
13
13
  gem 'rake'
14
14
  gem 'rdoc'
15
15
  gem 'rspec', '~> 3.0'
16
- gem 'rubocop', '~> 0.48'
16
+ gem 'rubocop', '~> 0.68.1'
17
17
  end
18
18
 
19
19
  gem 'grape-swagger', git: 'https://github.com/ruby-grape/grape-swagger.git'
data/README.md CHANGED
@@ -26,7 +26,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
26
26
 
27
27
  ## Contributing
28
28
 
29
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/grape-swagger-entity.
29
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ruby-grape/grape-swagger-entity.
30
30
 
31
31
  ## License
32
32
 
@@ -19,5 +19,5 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.required_ruby_version = '>= 2.2.6'
21
21
  s.add_runtime_dependency 'grape-entity', '>= 0.5.0'
22
- s.add_runtime_dependency 'grape-swagger', '>= 0.31.0'
22
+ s.add_runtime_dependency 'grape-swagger', '>= 1.0.0'
23
23
  end
@@ -13,19 +13,33 @@ module GrapeSwagger
13
13
 
14
14
  if entity_model
15
15
  name = endpoint.nil? ? entity_model.to_s.demodulize : endpoint.send(:expose_params_from_model, entity_model)
16
- return entity_model_type(name, entity_options)
16
+
17
+ entity_model_type = entity_model_type(name, entity_options)
18
+ return entity_model_type unless documentation
19
+
20
+ add_array_documentation(entity_model_type, documentation) if documentation[:is_array]
21
+
22
+ entity_model_type
17
23
  else
18
24
  param = data_type_from(entity_options)
19
25
  return param unless documentation
20
26
 
21
- param[:default] = documentation[:default] if documentation[:default]
22
- add_attribute_example(param, documentation[:example])
27
+ add_attribute_sample(param, documentation, :default)
28
+ add_attribute_sample(param, documentation, :example)
23
29
 
24
30
  if (values = documentation[:values])
25
31
  param[:enum] = values if values.is_a?(Array)
26
32
  end
27
33
 
28
- param = { type: :array, items: param } if documentation[:is_array]
34
+ if documentation[:is_array]
35
+ param = { type: :array, items: param }
36
+ add_array_documentation(param, documentation)
37
+ end
38
+
39
+ add_attribute_documentation(param, documentation)
40
+
41
+ add_extension_documentation(param, documentation)
42
+
29
43
  param
30
44
  end
31
45
  end
@@ -42,6 +56,7 @@ module GrapeSwagger
42
56
 
43
57
  def could_it_be_a_model?(value)
44
58
  return false if value.nil?
59
+
45
60
  direct_model_type?(value[:type]) || ambiguous_model_type?(value[:type])
46
61
  end
47
62
 
@@ -92,9 +107,26 @@ module GrapeSwagger
92
107
  end
93
108
  end
94
109
 
95
- def add_attribute_example(attribute, example)
96
- return unless example
97
- attribute[:example] = example.is_a?(Proc) ? example.call : example
110
+ def add_attribute_sample(attribute, hash, key)
111
+ value = hash[key]
112
+ return if value.nil?
113
+
114
+ attribute[key] = value.is_a?(Proc) ? value.call : value
115
+ end
116
+
117
+ def add_attribute_documentation(param, documentation)
118
+ param[:minLength] = documentation[:min_length] if documentation.key?(:min_length)
119
+ param[:maxLength] = documentation[:max_length] if documentation.key?(:max_length)
120
+ end
121
+
122
+ def add_array_documentation(param, documentation)
123
+ param[:minItems] = documentation[:min_items] if documentation.key?(:min_items)
124
+ param[:maxItems] = documentation[:max_items] if documentation.key?(:max_items)
125
+ param[:uniqueItems] = documentation[:unique_items] if documentation.key?(:unique_items)
126
+ end
127
+
128
+ def add_extension_documentation(param, documentation)
129
+ GrapeSwagger::DocMethods::Extensions.add_extensions_to_root(documentation, param)
98
130
  end
99
131
  end
100
132
  end
@@ -17,6 +17,14 @@ module GrapeSwagger
17
17
 
18
18
  private
19
19
 
20
+ class Alias
21
+ attr_reader :original, :renamed
22
+ def initialize(original, renamed)
23
+ @original = original
24
+ @renamed = renamed
25
+ end
26
+ end
27
+
20
28
  def extract_params(exposure)
21
29
  exposure.root_exposures.each_with_object({}) do |value, memo|
22
30
  if value.for_merge && (value.respond_to?(:entity_class) || value.respond_to?(:using_class_name))
@@ -25,7 +33,8 @@ module GrapeSwagger
25
33
  extracted_params = extract_params(entity_class)
26
34
  memo.merge!(extracted_params)
27
35
  else
28
- memo[value.attribute] = value.send(:options)
36
+ opts = value.send(:options)
37
+ opts[:as] ? memo[Alias.new(value.attribute, opts[:as])] = opts : memo[value.attribute] = opts
29
38
  end
30
39
  end
31
40
  end
@@ -34,8 +43,12 @@ module GrapeSwagger
34
43
  return unless params
35
44
 
36
45
  parsed = params.each_with_object({}) do |(entity_name, entity_options), memo|
37
- next if entity_options.fetch(:documentation, {}).fetch(:in, nil).to_s == 'header'
46
+ documentation_options = entity_options.fetch(:documentation, {})
47
+ in_option = documentation_options.fetch(:in, nil).to_s
48
+ hidden_option = documentation_options.fetch(:hidden, nil)
49
+ next if in_option == 'header' || hidden_option == true
38
50
 
51
+ entity_name = entity_name.original if entity_name.is_a?(Alias)
39
52
  final_entity_name = entity_options.fetch(:as, entity_name)
40
53
  documentation = entity_options[:documentation]
41
54
 
@@ -46,6 +59,7 @@ module GrapeSwagger
46
59
  end
47
60
 
48
61
  next unless documentation
62
+
49
63
  memo[final_entity_name][:readOnly] = documentation[:read_only].to_s == 'true' if documentation[:read_only]
50
64
  memo[final_entity_name][:description] = documentation[:desc] if documentation[:desc]
51
65
  end
@@ -92,6 +106,7 @@ module GrapeSwagger
92
106
 
93
107
  def with_required(hash, required)
94
108
  return hash if required.empty?
109
+
95
110
  hash[:required] = required
96
111
  hash
97
112
  end
@@ -1,5 +1,5 @@
1
1
  module GrapeSwagger
2
2
  module Entity
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
5
5
  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.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Zaitsev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-22 00:00:00.000000000 Z
11
+ date: 2020-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape-entity
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.31.0
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.31.0
40
+ version: 1.0.0
41
41
  description:
42
42
  email:
43
43
  - kirik910@gmail.com
@@ -83,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.5.2
86
+ rubygems_version: 3.0.3
88
87
  signing_key:
89
88
  specification_version: 4
90
89
  summary: Grape swagger adapter to support grape-entity object parsing