@@ -14,46 +14,48 @@ def endpoints
14
14
15
15
def request_params
16
16
@request_params ||= begin
17
- ret = { }
18
- @endpoint_hash . each do |key , endpoint |
19
- ret [ key ] = request_params_inner ( params_or_nil ( endpoint ) )
20
- end
21
- ret
22
- end
17
+ ret = { }
18
+ @endpoint_hash . each do |key , endpoint |
19
+ ret [ key ] = request_params_inner ( params_or_nil ( endpoint ) )
20
+ end
21
+ ret
22
+ end
23
23
end
24
24
25
25
def response_attributes
26
26
@response_attributes ||= begin
27
- ret = { }
28
- @endpoint_hash . each do |key , endpoint |
29
- ret [ key ] = response_attributes_inner ( endpoint )
30
- end
31
- ret
32
- end
27
+ ret = { }
28
+ @endpoint_hash . each do |key , endpoint |
29
+ ret [ key ] = response_attributes_inner ( endpoint )
30
+ end
31
+ ret
32
+ end
33
33
end
34
34
35
35
private
36
36
37
- def merge_refs! ( h1 , h2 )
38
- h2 . each do |k , v |
39
- if h1 . include? ( k )
40
- h1 [ k ] += h1 [ k ] . merge ( v )
37
+ def merge_refs! ( hash1 , hash2 )
38
+ hash2 . each do |k , v |
39
+ if hash1 . include? ( k )
40
+ hash1 [ k ] += hash1 [ k ] . merge ( v )
41
41
else
42
- h1 [ k ] = v
42
+ hash1 [ k ] = v
43
43
end
44
44
end
45
45
end
46
46
47
47
def params_or_nil ( endpoint )
48
- endpoint && endpoint [ 'parameters' ] || nil
48
+ ( endpoint && endpoint [ 'parameters' ] ) || nil
49
49
end
50
50
51
51
def parse_swagger ( swagger )
52
52
if swagger . is_a? Hash
53
53
swagger
54
54
else
55
- if File . exist? ( swagger ) || swagger [ 0 ..7 ] =~ %r{^https?://}
56
- swagger = open ( swagger ) . read
55
+ if File . exist? ( swagger )
56
+ swagger = File . read ( swagger )
57
+ elsif swagger [ 0 ..7 ] =~ %r{^https?://}
58
+ swagger = URI . parse ( swagger ) . read
57
59
end
58
60
begin
59
61
JSON . parse ( swagger )
@@ -104,7 +106,7 @@ def refs(ref, prefix = '')
104
106
{ }
105
107
end
106
108
idx = ref . rindex ( '/' )
107
- key = ref [ idx + 1 ..- 1 ]
109
+ key = ref [ idx + 1 ..]
108
110
schema ( defs . fetch ( key , { } ) , prefix )
109
111
end
110
112
@@ -150,7 +152,7 @@ def schema(definition, prefix = '')
150
152
# rubocop:enable Metrics/CyclomaticComplexity
151
153
# rubocop:enable Metrics/AbcSize
152
154
153
- def nested ( ref , prefix , name , list = false )
155
+ def nested ( ref , prefix , name , list : false )
154
156
# Check for cycles by testing whether name was already added to
155
157
# prefix.
156
158
key = "#{ prefix } #{ name } #{ '[]' if list } "
@@ -175,20 +177,16 @@ def properties_for_param(prefix, definition)
175
177
# rubocop:disable Metrics/ParameterLists
176
178
def add_property ( ret , prefix , name , schema , required , list )
177
179
key = "#{ prefix } #{ name } "
178
- ret [ :required ] . add ( key ) if required && required . include? ( name )
179
- loc = if schema [ 'in' ]
180
- schema [ 'in' ]
181
- else
182
- 'body'
183
- end
180
+ ret [ :required ] . add ( key ) if required &.include? ( name )
181
+ loc = schema [ 'in' ] || 'body'
184
182
ret [ :all ] . add ( "#{ key } (in: #{ loc } , type: #{ schema [ 'type' ] } #{ '[]' if list } )" )
185
183
end
186
184
# rubocop:enable Metrics/ParameterLists
187
185
188
- def properties_for_ref ( prefix , name , schema , required , list = false )
186
+ def properties_for_ref ( prefix , name , schema , required , list : false )
189
187
ret = { required : Set . new , all : Set . new }
190
188
if schema [ '$ref' ]
191
- merge_refs! ( ret , nested ( schema [ '$ref' ] , prefix , name , list ) )
189
+ merge_refs! ( ret , nested ( schema [ '$ref' ] , prefix , name , list : list ) )
192
190
elsif schema [ 'properties' ]
193
191
prefix = "#{ name } #{ '[]' if list } /"
194
192
merge_refs! ( ret , properties ( schema [ 'properties' ] , schema [ 'required' ] , prefix ) )
@@ -224,7 +222,7 @@ def properties(properties, required, prefix = '')
224
222
ret = { required : Set . new , all : Set . new }
225
223
properties . each do |name , schema |
226
224
if schema [ 'type' ] == 'array'
227
- merge_refs! ( ret , properties_for_ref ( prefix , name , schema [ 'items' ] , required , true ) )
225
+ merge_refs! ( ret , properties_for_ref ( prefix , name , schema [ 'items' ] , required , list : true ) )
228
226
elsif schema [ 'type' ] == 'object' || schema [ 'properties' ]
229
227
if schema [ 'allOf' ]
230
228
# TODO: handle nested allOfs.
@@ -243,6 +241,7 @@ def properties(properties, required, prefix = '')
243
241
def request_params_inner ( params )
244
242
ret = { required : Set . new , all : Set . new }
245
243
return ret if params . nil?
244
+
246
245
params . each do |param |
247
246
if param [ 'in' ] == 'body'
248
247
merge_refs! ( ret , schema ( param [ 'schema' ] ) )
@@ -287,6 +286,7 @@ def validate_swagger
287
286
JSON ::Validator . add_schema ( json_schema )
288
287
errors = JSON ::Validator . fully_validate ( schema_for ( 'oai' ) , JSON . dump ( @parsed ) )
289
288
return if errors . empty?
289
+
290
290
spec = if @spec . to_s . length > 80
291
291
"#{ @spec . to_s [ 0 ..74 ] } ..."
292
292
else
0 commit comments