handleRequest method
JSON boundary for a host-owned authenticated transport. Never expose this as an unauthenticated network service or to artifact-provided code.
Implementation
Future<Map<String, Object?>> handleRequest(
Map<String, dynamic> request,
) async {
try {
if (utf8.encode(jsonEncode(request)).length > 20000) {
throw const FormatException('Interaction request is too large.');
}
if (request['method'] == 'observe' &&
request.keys.every((k) => k == 'method' || k == 'sessionId') &&
(request['sessionId'] == null || request['sessionId'] is String)) {
return (await observe(
sessionId: request['sessionId'] as String?,
)).toJson();
}
if (request['method'] == 'interact' &&
request.length == 2 &&
request['request'] is Map) {
return (await interact(
MiniProgramInteractionRequest.fromJson(
Map<String, dynamic>.from(request['request'] as Map),
),
)).toJson();
}
} on Object {
return {'status': 'rejected', 'code': 'invalid_request'};
}
return {'status': 'rejected', 'code': 'invalid_request'};
}