handleRequest method

Future<Map<String, Object?>> handleRequest(
  1. Map<String, dynamic> request
)

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'};
}