extractRefsFromOperation function
Extracts $ref
values from Swagger responses and parameters and maps them to readable strings.
Parameters:
responses
: A map ofSwaggerResponse
objects, keyed by status codes (e.g., "200").parameters
: A list ofSwaggerRequestParameter
objects to extract$ref
values from.
Returns:
- A map (Map<String, String>) where:
- The key is either "response" (for response
$ref
s) or "parameter" (for parameter$ref
s). - The value is the capitalized string extracted from the
$ref
path.
- The key is either "response" (for response
Implementation
Map<String, String> extractRefsFromOperation(
Map<String, SwaggerResponse> responses,
List<SwaggerRequestParameter> parameters) {
final Map<String, String> extractedRefs = {};
String capitalize(String input) {
if (input.isEmpty) return input;
return '${input[0].toUpperCase()}${input.substring(1)}';
}
if (responses.containsKey('200')) {
final SwaggerResponse response200 = responses['200']!;
if (response200.schema?.ref.isNotEmpty == true) {
extractedRefs['response'] =
capitalize(response200.schema!.ref.split('/').last);
}
}
final bodyParameter = parameters.firstWhere(
(param) =>
param.inParameter == 'body' && param.schema?.ref.isNotEmpty == true,
orElse: () => SwaggerRequestParameter(), // Default empty parameter
);
if (bodyParameter.schema?.ref.isNotEmpty == true) {
extractedRefs['parameter'] =
capitalize(bodyParameter.schema!.ref.split('/').last);
}
return extractedRefs;
}