extractRefsFromOperation function

Map<String, String> extractRefsFromOperation(
  1. Map<String, SwaggerResponse> responses,
  2. List<SwaggerRequestParameter> parameters
)

Extracts $ref values from Swagger responses and parameters and maps them to readable strings.

Parameters:

  • responses: A map of SwaggerResponse objects, keyed by status codes (e.g., "200").
  • parameters: A list of SwaggerRequestParameter objects to extract $ref values from.

Returns:

  • A map (Map<String, String>) where:
    • The key is either "response" (for response $refs) or "parameter" (for parameter $refs).
    • The value is the capitalized string extracted from the $ref path.

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;
}