request method
Executes a low-level request for reverse-engineering purposes.
This method is intentionally flexible so MCP tools can experiment with various Smartschool endpoints.
Implementation
Future<InspectionResult> request(
String method,
String path, {
DevRequestOptions options = const DevRequestOptions(),
}) async {
final headers = options.headers;
final query = options.query;
final data = options.data;
final formData = options.formData;
final contentType = options.contentType;
final isJson = options.isJson;
final baseUri = _uri(path);
final uri = (query == null || query.isEmpty)
? baseUri
: baseUri.replace(
queryParameters: {
...baseUri.queryParameters,
for (final entry in query.entries)
entry.key: entry.value?.toString() ?? '',
},
);
final response = await _client.dio.requestUri<String>(
uri,
data: data ?? formData,
options: Options(
method: method,
headers: headers,
contentType: contentType,
),
);
return InspectionResult(
uri: uri,
method: method.toUpperCase(),
statusCode: response.statusCode ?? 0,
headers: _flattenHeaders(response.headers),
body: response.data ?? '',
isJson: isJson,
);
}