Files
apidash/lib/dashbot/features/explain.dart
2025-03-05 23:12:32 +05:30

63 lines
2.0 KiB
Dart

import 'dart:convert';
import '../services/dashbot_service.dart';
import 'package:apidash/models/request_model.dart';
class ExplainFeature {
final DashBotService _service;
ExplainFeature(this._service);
Future<String> explainLatestApi({
required RequestModel? requestModel,
required dynamic responseModel,
}) async {
if (requestModel == null || responseModel == null) {
return "No recent API requests found.";
}
if (requestModel.httpRequestModel?.url == null) {
return "Error: Invalid API request (missing endpoint).";
}
final method = requestModel.httpRequestModel?.method.toString().split('.').last.toUpperCase() ?? "GET";
final endpoint = requestModel.httpRequestModel!.url!;
final headers = requestModel.httpRequestModel?.enabledHeadersMap ?? {};
final parameters = requestModel.httpRequestModel?.enabledParamsMap ?? {};
final body = requestModel.httpRequestModel?.body;
final rawResponse = responseModel.body;
final responseBody = rawResponse is String ? rawResponse : jsonEncode(rawResponse);
final statusCode = responseModel.statusCode ?? 0;
final prompt = '''
FOCUSED API INTERACTION BREAKDOWN
**Essential Request Details:**
- Endpoint Purpose: What is this API endpoint designed to do?
- Interaction Type: Describe the core purpose of this specific request
**Request Mechanics:**
- Exact Endpoint: $endpoint
- HTTP Method: $method
- Key Parameters: ${parameters.isNotEmpty ? 'Specific inputs driving the request' : 'No custom parameters'}
**Response CORE Insights:**
- Status: Success or Failure?
- Key Data Extracted: What CRITICAL information does the response contain?
**Precise Analysis Requirements:**
1. Explain the API's PRIMARY function in ONE clear sentence
2. Identify the MOST IMPORTANT piece of information returned
3. Describe the PRACTICAL significance of this API call
AVOID:
- Technical jargon
- Unnecessary details
- Verbose explanations
Deliver a CRYSTAL CLEAR, CONCISE explanation that anyone can understand.
''';
return _service.generateResponse(prompt);
}
}