@@ -43,37 +43,57 @@ def extract_params(exposure)
43
43
def parse_grape_entity_params ( params , parent_model = nil )
44
44
return unless params
45
45
46
- parsed = params . each_with_object ( { } ) do |( entity_name , entity_options ) , memo |
47
- documentation_options = entity_options . fetch ( :documentation , { } )
48
- in_option = documentation_options . fetch ( :in , nil ) . to_s
49
- hidden_option = documentation_options . fetch ( :hidden , nil )
50
- next if in_option == 'header' || hidden_option == true
51
-
52
- entity_name = entity_name . original if entity_name . is_a? ( Alias )
53
- final_entity_name = entity_options . fetch ( :as , entity_name )
54
- documentation = entity_options [ :documentation ]
55
-
56
- memo [ final_entity_name ] = if entity_options [ :nesting ]
57
- parse_nested ( entity_name , entity_options , parent_model )
58
- else
59
- attribute_parser . call ( entity_options )
60
- end
61
-
62
- next unless documentation
63
-
64
- memo [ final_entity_name ] [ :readOnly ] = documentation [ :read_only ] . to_s == 'true' if documentation [ :read_only ]
65
- memo [ final_entity_name ] [ :description ] = documentation [ :desc ] if documentation [ :desc ]
46
+ required = required_params ( params )
47
+ parsed_params = parse_params ( params , parent_model )
48
+
49
+ handle_discriminator ( parsed_params , required )
50
+ end
51
+
52
+ def parse_params ( params , parent_model )
53
+ params . each_with_object ( { } ) do |( entity_name , entity_options ) , memo |
54
+ next if skip_param? ( entity_options )
55
+
56
+ original_entity_name = entity_name . is_a? ( Alias ) ? entity_name . original : entity_name
57
+ final_entity_name = entity_options . fetch ( :as , original_entity_name )
58
+
59
+ memo [ final_entity_name ] = parse_entity_options ( entity_options , original_entity_name , parent_model )
60
+ add_documentation_to_memo ( memo [ final_entity_name ] , entity_options [ :documentation ] )
61
+ end
62
+ end
63
+
64
+ def skip_param? ( entity_options )
65
+ documentation_options = entity_options . fetch ( :documentation , { } )
66
+ in_option = documentation_options . fetch ( :in , nil ) . to_s
67
+ hidden_option = documentation_options . fetch ( :hidden , nil )
68
+
69
+ in_option == 'header' || hidden_option == true
70
+ end
71
+
72
+ def parse_entity_options ( entity_options , entity_name , parent_model )
73
+ if entity_options [ :nesting ]
74
+ parse_nested ( entity_name , entity_options , parent_model )
75
+ else
76
+ attribute_parser . call ( entity_options )
66
77
end
78
+ end
79
+
80
+ def add_documentation_to_memo ( memo_entry , documentation )
81
+ return unless documentation
82
+
83
+ memo_entry [ :readOnly ] = documentation [ :read_only ] . to_s == 'true' if documentation [ :read_only ]
84
+ memo_entry [ :description ] = documentation [ :desc ] if documentation [ :desc ]
85
+ end
67
86
87
+ def handle_discriminator ( parsed , required )
68
88
discriminator = GrapeSwagger ::Entity ::Helper . discriminator ( model )
69
89
if discriminator
70
- respond_with_all_of ( parsed , params , discriminator )
90
+ respond_with_all_of ( parsed , required , discriminator )
71
91
else
72
- [ parsed , required_params ( params ) ]
92
+ [ parsed , required ]
73
93
end
74
94
end
75
95
76
- def respond_with_all_of ( parsed , params , discriminator )
96
+ def respond_with_all_of ( parsed , required , discriminator )
77
97
parent_name = GrapeSwagger ::Entity ::Helper . model_name ( model . superclass , endpoint )
78
98
79
99
{
@@ -83,7 +103,7 @@ def respond_with_all_of(parsed, params, discriminator)
83
103
} ,
84
104
[
85
105
add_discriminator ( parsed , discriminator ) ,
86
- required_params ( params ) . push ( discriminator . attribute )
106
+ required . push ( discriminator . attribute )
87
107
]
88
108
]
89
109
}
0 commit comments