request method

Future<InspectionResult> request(
  1. String method,
  2. String path, {
  3. DevRequestOptions options = const DevRequestOptions(),
})

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