Skip to content

Commit 917bd8b

Browse files
authored
Merge branch 'master' into fix-array-handling
2 parents 14c38d9 + e1261f8 commit 917bd8b

File tree

10 files changed

+59
-24
lines changed

10 files changed

+59
-24
lines changed

.rubocop.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ Layout/SpaceAroundMethodCallOperator:
3030
Lint/DeprecatedOpenSSLConstant:
3131
Enabled: true
3232

33+
Lint/DuplicateElsifCondition:
34+
Enabled: true
35+
3336
Lint/MixedRegexpCaptureTypes:
3437
Enabled: true
3538

@@ -62,12 +65,29 @@ Naming:
6265

6366
# Style stuff
6467
#
68+
Style/AccessorGrouping:
69+
Enabled: true
70+
71+
Style/ArrayCoercion:
72+
Enabled: true
73+
74+
Style/BisectedAttrAccessor:
75+
Enabled: true
76+
77+
Style/CaseLikeIf:
78+
Enabled: true
79+
6580
Style/ExponentialNotation:
6681
Enabled: true
6782

83+
Style/HashAsLastArrayItem:
84+
Enabled: true
6885
Style/HashEachMethods:
6986
Enabled: true
7087

88+
Style/HashLikeCase:
89+
Enabled: true
90+
7191
Style/HashTransformKeys:
7292
Enabled: true
7393

@@ -77,9 +97,15 @@ Style/HashTransformValues:
7797
Style/RegexpLiteral:
7898
Enabled: false
7999

100+
Style/RedundantAssignment:
101+
Enabled: true
102+
80103
Style/RedundantFetchBlock:
81104
Enabled: true
82105

106+
Style/RedundantFileExtensionInRequire:
107+
Enabled: true
108+
83109
Style/RedundantRegexpCharacterClass:
84110
Enabled: true
85111

@@ -88,3 +114,5 @@ Style/RedundantRegexpEscape:
88114

89115
Style/SlicingWithRange:
90116
Enabled: false
117+
118+

.travis.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ rvm:
1313
- 2.6.6
1414
- 2.7.1
1515
env:
16-
- GRAPE_VERSION=1.3.0 MODEL_PARSER=grape-swagger-entity
17-
- GRAPE_VERSION=1.3.0 MODEL_PARSER=grape-swagger-representable
18-
- GRAPE_VERSION=1.3.0
16+
- GRAPE_VERSION=1.3.3
17+
- GRAPE_VERSION=1.4.0 MODEL_PARSER=grape-swagger-entity
18+
- GRAPE_VERSION=1.4.0 MODEL_PARSER=grape-swagger-representable
19+
- GRAPE_VERSION=1.4.0
1920
- GRAPE_VERSION=HEAD
2021

2122
jobs:
@@ -33,5 +34,3 @@ jobs:
3334
- rvm: 2.4.10
3435
- rvm: ruby-head
3536
- rvm: jruby-head
36-
37-
- env: GRAPE_VERSION=HEAD

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#### Fixes
88

99
* Your contribution here.
10+
* [#801](https://github.com/ruby-grape/grape-swagger/pull/801): Fixes behaviour after grape upgrade to 1.4.0 - [@LeFnord](https://github.com/LeFnord).
1011

1112

1213
### 1.2.0 (July 1, 2020)

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ruby RUBY_VERSION
66

77
gemspec
88

9-
gem 'grape', case version = ENV['GRAPE_VERSION'] || '>= 1.3.0'
9+
gem 'grape', case version = ENV['GRAPE_VERSION'] || '>= 1.4.0'
1010
when 'HEAD'
1111
{ git: 'https://github.com/ruby-grape/grape' }
1212
else
@@ -27,7 +27,7 @@ group :development, :test do
2727
gem 'rake'
2828
gem 'rdoc'
2929
gem 'rspec', '~> 3.9'
30-
gem 'rubocop', '~> 0.85', require: false
30+
gem 'rubocop', '~> 0.88', require: false
3131
end
3232

3333
group :test do

lib/grape-swagger.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ def route_path_start_with?(route, name)
107107
end
108108

109109
module SwaggerDocumentationAdder
110-
attr_accessor :combined_namespaces, :combined_namespace_identifiers
111-
attr_accessor :combined_routes, :combined_namespace_routes
110+
attr_accessor :combined_namespaces, :combined_namespace_identifiers, :combined_routes, :combined_namespace_routes
112111

113112
include SwaggerRouting
114113

lib/grape-swagger/endpoint.rb

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,18 @@ def consumes_object(route, format)
175175
end
176176

177177
def params_object(route, options, path)
178-
parameters = partition_params(route, options).map do |param, value|
178+
parameters = build_request_params(route, options).each_with_object([]) do |(param, value), memo|
179+
next if hidden_parameter?(value)
180+
179181
value = { required: false }.merge(value) if value.is_a?(Hash)
180182
_, value = default_type([[param, value]]).first if value == ''
183+
181184
if value.dig(:documentation, :type)
182185
expose_params(value[:documentation][:type])
183186
elsif value[:type]
184187
expose_params(value[:type])
185188
end
186-
GrapeSwagger::DocMethods::ParseParams.call(param, value, path, route, @definitions)
189+
memo << GrapeSwagger::DocMethods::ParseParams.call(param, value, path, route, @definitions)
187190
end
188191

189192
if GrapeSwagger::DocMethods::MoveParams.can_be_moved?(route.request_method, parameters)
@@ -253,7 +256,7 @@ def success_codes_from_route(route)
253256

254257
def tag_object(route, path)
255258
version = GrapeSwagger::DocMethods::Version.get(route)
256-
version = [version] unless version.is_a?(Array)
259+
version = Array(version)
257260
prefix = route.prefix.to_s.split('/').reject(&:empty?)
258261
Array(
259262
path.split('{')[0].split('/').reject(&:empty?).delete_if do |i|
@@ -296,16 +299,13 @@ def build_file_response(memo)
296299
memo['schema'] = { type: 'file' }
297300
end
298301

299-
def partition_params(route, settings)
300-
declared_params = route.settings[:declared_params] if route.settings[:declared_params].present?
302+
def build_request_params(route, settings)
301303
required = merge_params(route)
302304
required = GrapeSwagger::DocMethods::Headers.parse(route) + required unless route.headers.nil?
303305

304306
default_type(required)
305307

306-
request_params = unless declared_params.nil? && route.headers.nil?
307-
GrapeSwagger::Endpoint::ParamsParser.parse_request_params(required, settings, self)
308-
end || {}
308+
request_params = GrapeSwagger::Endpoint::ParamsParser.parse_request_params(required, settings, self)
309309

310310
request_params.empty? ? required : request_params
311311
end
@@ -366,6 +366,16 @@ def hidden?(route, options)
366366
options[:token_owner] ? route_hidden.call(send(options[:token_owner].to_sym)) : route_hidden.call
367367
end
368368

369+
def hidden_parameter?(value)
370+
return false if value.dig(:required)
371+
372+
if value.dig(:documentation, :hidden).is_a?(Proc)
373+
value.dig(:documentation, :hidden).call
374+
else
375+
value.dig(:documentation, :hidden)
376+
end
377+
end
378+
369379
def success_code_from_entity(route, entity)
370380
default_code = GrapeSwagger::DocMethods::StatusCodes.get[route.request_method.downcase.to_sym]
371381
if entity.is_a?(Hash)

spec/support/empty_model_parser.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ class EmptyClass
55

66
module GrapeSwagger
77
class EmptyModelParser
8-
attr_reader :model
9-
attr_reader :endpoint
8+
attr_reader :model, :endpoint
109

1110
def initialize(model, endpoint)
1211
@model = model

spec/support/mock_parser.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
module GrapeSwagger
44
class MockParser
5-
attr_reader :model
6-
attr_reader :endpoint
5+
attr_reader :model, :endpoint
76

87
def initialize(model, endpoint)
98
@model = model

spec/swagger_v2/api_swagger_v2_hide_param_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def resource_owner
1919
requires :name, type: String, documentation: { desc: 'name' }
2020
optional :favourite_color, type: String, documentation: { desc: 'I should not be anywhere', hidden: true }
2121
optional :proc_param, type: String, documentation: { desc: 'I should not be anywhere', hidden: proc { true } }
22-
optional :proc_with_token, type: String, documentation: { desc: 'I may be somewhere', hidden: proc { |token_owner = nil| token_owner.nil? } }
22+
optional :proc_with_token, type: String, documentation: { desc: 'I may be somewhere', hidden: proc { false } }
2323
end
2424

2525
post do

spec/swagger_v2/security_requirement_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
describe 'security requirement on endpoint method' do
66
def app
77
Class.new(Grape::API) do
8-
desc 'Endpoint with security requirement', security: [oauth_pets: ['read:pets', 'write:pets']]
8+
desc 'Endpoint with security requirement', security: [{ oauth_pets: ['read:pets', 'write:pets'] }]
99
get '/with_security' do
1010
{ foo: 'bar' }
1111
end
@@ -37,7 +37,7 @@ def app
3737
end
3838

3939
it 'defines the security requirement on the endpoint method' do
40-
expect(subject['paths']['/with_security']['get']['security']).to eql ['oauth_pets' => ['read:pets', 'write:pets']]
40+
expect(subject['paths']['/with_security']['get']['security']).to eql [{ 'oauth_pets' => ['read:pets', 'write:pets'] }]
4141
end
4242

4343
it 'defines an empty security requirement on the endpoint method' do

0 commit comments

Comments
 (0)