mirror of
https://github.com/foss42/apidash.git
synced 2025-12-04 03:46:57 +08:00
refactor: remove unused old dashbot features and related files
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import '../services/services.dart';
|
||||
import '../../models/models.dart';
|
||||
|
||||
class DebugFeature {
|
||||
final DashBotService _service;
|
||||
|
||||
DebugFeature(this._service);
|
||||
|
||||
Future<String> debugApi({
|
||||
required RequestModel? requestModel,
|
||||
required dynamic responseModel,
|
||||
}) async {
|
||||
if (requestModel == null || responseModel == null) {
|
||||
return "No recent API requests found.";
|
||||
}
|
||||
|
||||
final method = requestModel.httpRequestModel?.method
|
||||
.toString()
|
||||
.split('.')
|
||||
.last
|
||||
.toUpperCase() ??
|
||||
"GET";
|
||||
final endpoint = requestModel.httpRequestModel?.url ?? "Unknown Endpoint";
|
||||
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 = """
|
||||
URGENT API DEBUG ANALYSIS
|
||||
|
||||
**Request Overview:**
|
||||
- Endpoint: $endpoint
|
||||
- Method: $method
|
||||
- Status Code: $statusCode
|
||||
|
||||
**Debugging Instructions:**
|
||||
Provide a PRECISE, TEXT-ONLY explanation that:
|
||||
1. Identifies the EXACT problem
|
||||
2. Explains WHY the request failed
|
||||
3. Describes SPECIFIC steps to resolve the issue
|
||||
4. NO CODE SNIPPETS ALLOWED
|
||||
|
||||
**Request Details:**
|
||||
- Headers: ${headers.isNotEmpty ? jsonEncode(headers) : "No headers"}
|
||||
- Parameters: ${parameters.isNotEmpty ? jsonEncode(parameters) : "No parameters"}
|
||||
- Request Body: ${body ?? "Empty body"}
|
||||
|
||||
**Response Context:**
|
||||
```
|
||||
$responseBody
|
||||
```
|
||||
|
||||
Provide a CLEAR, ACTIONABLE solution in the SIMPLEST possible language.
|
||||
""";
|
||||
|
||||
return _service.generateResponse(prompt);
|
||||
}
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import '../services/services.dart';
|
||||
import '../../models/models.dart';
|
||||
|
||||
class DocumentationFeature {
|
||||
final DashBotService _service;
|
||||
|
||||
DocumentationFeature(this._service);
|
||||
|
||||
Future<String> generateApiDocumentation({
|
||||
required RequestModel? requestModel,
|
||||
required dynamic responseModel,
|
||||
}) async {
|
||||
if (requestModel == null || responseModel == null) {
|
||||
return "No recent API requests found.";
|
||||
}
|
||||
|
||||
final method = requestModel.httpRequestModel?.method
|
||||
.toString()
|
||||
.split('.')
|
||||
.last
|
||||
.toUpperCase() ??
|
||||
"GET";
|
||||
final endpoint = requestModel.httpRequestModel?.url ?? "Unknown Endpoint";
|
||||
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 = """
|
||||
API DOCUMENTATION GENERATION
|
||||
|
||||
**API Details:**
|
||||
- Endpoint: $endpoint
|
||||
- Method: $method
|
||||
- Status Code: $statusCode
|
||||
|
||||
**Request Components:**
|
||||
- Headers: ${headers.isNotEmpty ? jsonEncode(headers) : "None"}
|
||||
- Query Parameters: ${parameters.isNotEmpty ? jsonEncode(parameters) : "None"}
|
||||
- Request Body: ${body != null && body.isNotEmpty ? body : "None"}
|
||||
|
||||
**Response Example:**
|
||||
```
|
||||
$responseBody
|
||||
```
|
||||
|
||||
**Documentation Instructions:**
|
||||
Create comprehensive API documentation that includes:
|
||||
|
||||
1. **Overview**: A clear, concise description of what this API endpoint does
|
||||
2. **Authentication**: Required authentication method based on headers
|
||||
3. **Request Details**: All required and optional parameters with descriptions
|
||||
4. **Response Structure**: Breakdown of response fields and their meanings
|
||||
5. **Error Handling**: Possible error codes and troubleshooting
|
||||
6. **Example Usage**: A complete code example showing how to call this API
|
||||
|
||||
Format in clean markdown with proper sections and code blocks where appropriate.
|
||||
""";
|
||||
|
||||
return _service.generateResponse(prompt);
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
import '../services/services.dart';
|
||||
import '../../models/models.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.name.toUpperCase() ?? "GET";
|
||||
final url = requestModel.httpRequestModel!.url;
|
||||
final headers = requestModel.httpRequestModel?.enabledHeadersMap ?? {};
|
||||
final parameters = requestModel.httpRequestModel?.enabledParamsMap ?? {};
|
||||
final body = requestModel.httpRequestModel?.body ?? '';
|
||||
final responseBody = responseModel.body;
|
||||
final statusCode = responseModel.statusCode;
|
||||
|
||||
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 Details:**
|
||||
- Endpoint: $url
|
||||
- HTTP Method: $method
|
||||
- Request Headers: ${headers.isEmpty ? "None" : headers}
|
||||
- URL Parameters: ${parameters.isEmpty ? "None" : parameters}
|
||||
- Request Body: ${body.isEmpty ? "None" : body}
|
||||
|
||||
**Response Details**
|
||||
- Status Code: $statusCode
|
||||
- Content: $responseBody
|
||||
|
||||
**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);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
export 'debug.dart';
|
||||
export 'documentation.dart';
|
||||
export 'explain.dart';
|
||||
export 'general_query.dart';
|
||||
export 'test_generator.dart';
|
||||
@@ -1,54 +0,0 @@
|
||||
import 'package:ollama_dart/ollama_dart.dart';
|
||||
import '../../models/models.dart';
|
||||
import '../consts.dart';
|
||||
|
||||
class GeneralQueryFeature {
|
||||
final OllamaClient _client;
|
||||
|
||||
GeneralQueryFeature(this._client);
|
||||
|
||||
Future<String> generateResponse(String prompt,
|
||||
{RequestModel? requestModel, dynamic responseModel}) async {
|
||||
String enhancedPrompt = prompt;
|
||||
|
||||
if (requestModel != null && responseModel != null) {
|
||||
final method = requestModel.httpRequestModel?.method
|
||||
.toString()
|
||||
.split('.')
|
||||
.last
|
||||
.toUpperCase() ??
|
||||
"GET";
|
||||
final endpoint = requestModel.httpRequestModel?.url ?? "Unknown Endpoint";
|
||||
final statusCode = responseModel.statusCode ?? 0;
|
||||
|
||||
enhancedPrompt = '''
|
||||
CONTEXT-AWARE RESPONSE
|
||||
|
||||
**User Question:**
|
||||
$prompt
|
||||
|
||||
**Related API Context:**
|
||||
- Endpoint: $endpoint
|
||||
- Method: $method
|
||||
- Status Code: $statusCode
|
||||
|
||||
**Instructions:**
|
||||
1. Directly address the user's specific question
|
||||
2. Provide relevant, concise information
|
||||
3. Reference the API context when helpful
|
||||
4. Focus on practical, actionable insights
|
||||
5. Avoid generic explanations or documentation
|
||||
|
||||
Respond in a helpful, direct manner that specifically answers what was asked.
|
||||
''';
|
||||
}
|
||||
|
||||
final response = await _client.generateCompletion(
|
||||
request: GenerateCompletionRequest(
|
||||
model: kModel,
|
||||
prompt: enhancedPrompt,
|
||||
),
|
||||
);
|
||||
return response.response.toString();
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import '../services/services.dart';
|
||||
import '../../models/models.dart';
|
||||
|
||||
class TestGeneratorFeature {
|
||||
final DashBotService _service;
|
||||
|
||||
TestGeneratorFeature(this._service);
|
||||
|
||||
Future<String> generateApiTests({
|
||||
required RequestModel? requestModel,
|
||||
required dynamic responseModel,
|
||||
}) async {
|
||||
if (requestModel == null || responseModel == null) {
|
||||
return "No recent API requests found.";
|
||||
}
|
||||
|
||||
final method = requestModel.httpRequestModel?.method
|
||||
.toString()
|
||||
.split('.')
|
||||
.last
|
||||
.toUpperCase() ??
|
||||
"GET";
|
||||
final endpoint = requestModel.httpRequestModel?.url ?? "Unknown Endpoint";
|
||||
final rawResponse = responseModel.body;
|
||||
final responseBody =
|
||||
rawResponse is String ? rawResponse : jsonEncode(rawResponse);
|
||||
final statusCode = responseModel.statusCode ?? 0;
|
||||
|
||||
Uri uri = Uri.parse(endpoint);
|
||||
final baseUrl = "${uri.scheme}://${uri.host}";
|
||||
final path = uri.path;
|
||||
|
||||
final parameterAnalysis = _analyzeParameters(uri.queryParameters);
|
||||
|
||||
final prompt = """
|
||||
EXECUTABLE API TEST CASES GENERATOR
|
||||
|
||||
**API Analysis:**
|
||||
- Base URL: $baseUrl
|
||||
- Endpoint: $path
|
||||
- Method: $method
|
||||
- Current Parameters: ${uri.queryParameters}
|
||||
- Current Response: $responseBody (Status: $statusCode)
|
||||
- Parameter Types: $parameterAnalysis
|
||||
|
||||
**Test Generation Task:**
|
||||
Generate practical, ready-to-use test cases for this API in cURL format. Each test should be executable immediately.
|
||||
|
||||
Include these test categories:
|
||||
1. **Valid Cases**: Different valid parameter values (use real-world examples like other country codes if this is a country API)
|
||||
2. **Invalid Parameter Tests**: Missing parameters, empty values, incorrect formats
|
||||
3. **Edge Cases**: Special characters, long values, unexpected inputs
|
||||
4. **Validation Tests**: Test input validation and error handling
|
||||
|
||||
For each test case:
|
||||
1. Provide a brief description of what the test verifies
|
||||
2. Include a complete, executable cURL command
|
||||
3. Show the expected outcome (status code and sample response)
|
||||
4. Organize tests in a way that's easy to copy and run
|
||||
|
||||
Focus on creating realistic test values based on the API context (e.g., for a country flag API, use real country codes, invalid codes, etc.)
|
||||
""";
|
||||
|
||||
final testCases = await _service.generateResponse(prompt);
|
||||
return "TEST_CASES_HIDDEN\n$testCases";
|
||||
}
|
||||
|
||||
String _analyzeParameters(Map<String, String> parameters) {
|
||||
if (parameters.isEmpty) {
|
||||
return "No parameters detected";
|
||||
}
|
||||
|
||||
Map<String, String> analysis = {};
|
||||
|
||||
parameters.forEach((key, value) {
|
||||
if (RegExp(r'^[A-Z]{3}$').hasMatch(value)) {
|
||||
analysis[key] =
|
||||
"Appears to be a 3-letter country code (ISO 3166-1 alpha-3)";
|
||||
} else if (RegExp(r'^[A-Z]{2}$').hasMatch(value)) {
|
||||
analysis[key] =
|
||||
"Appears to be a 2-letter country code (ISO 3166-1 alpha-2)";
|
||||
} else if (RegExp(r'^\d+$').hasMatch(value)) {
|
||||
analysis[key] = "Numeric value";
|
||||
} else if (RegExp(r'^[a-zA-Z]+$').hasMatch(value)) {
|
||||
analysis[key] = "Alphabetic string";
|
||||
} else {
|
||||
analysis[key] = "Unknown format: $value";
|
||||
}
|
||||
});
|
||||
|
||||
return jsonEncode(analysis);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user