logApi static method

void logApi({
  1. required ApiLogType type,
  2. required String apiPath,
  3. required String method,
  4. int? statusCode,
  5. String? requestBody,
  6. String? responseBody,
  7. Map<String, String>? headers,
  8. StackTrace? stackTrace,
})

Implementation

static void logApi({
  required ApiLogType type,
  required String apiPath,
  required String method, // Added API method (GET, POST, etc.)
  int? statusCode,
  String? requestBody,
  String? responseBody,
  Map<String, String>? headers,
  StackTrace? stackTrace,
}) {
  final timestamp = DateTime.now().toIso8601String();
  String emoji;
  String colorCode;

  switch (type) {
    case ApiLogType.request:
      emoji = '📤'; // Outgoing request
      colorCode = '\x1B[36m'; // Cyan
      break;
    case ApiLogType.response:
      emoji = '📥'; // Incoming response
      colorCode = '\x1B[32m'; // Green
      break;
    case ApiLogType.error:
      emoji = '❌';
      colorCode = '\x1B[31m'; // Red
      break;
  }

  final baseMessage = '''
$colorCode[$timestamp] $emoji API ${type.name.toUpperCase()}
🔗 Path: $apiPath
🔄 Method: $method
${statusCode != null ? '📟 Status Code: $statusCode' : ''}
${headers != null ? '📑 Headers: ${headers.toString()}' : ''}
${requestBody != null ? '📦 Request Body: $requestBody' : ''}
${responseBody != null ? '📨 Response Body: $responseBody' : ''}''';

  final logMessage = stackTrace != null
      ? '$baseMessage\nStackTrace: $stackTrace'
      : baseMessage;

  developer.log(logMessage, name: 'API-${type.name}');
}