RpcObject.fromMeta constructor

RpcObject.fromMeta(
  1. dynamic meta
)

creates RpcObject from Map or List of Map

Map is used to create RpcRequest or RpcResponse

List is used to create RpcBatch which a list of RpcRequest and RpcResponse

throws Exception if rpcObject is not a Map or List

throws RpcError with code RpcError.kInvalidRequest if failed to create object

Implementation

factory RpcObject.fromMeta(dynamic meta) {
  assert(meta is Map || meta is List, 'meta must be Map or List');

  if (meta is Map && meta['jsonrpc'] == '2.0') {
    if (meta.containsKey('method')) {
      return RpcRequest.fromMeta(meta.cast<String, dynamic>());
    } else {
      return RpcResponse.fromMeta(meta.cast<String, dynamic>());
    }
  } else if (meta is List) {
    return RpcBatch.fromMeta(meta.cast<Map<String, dynamic>>());
  } else {
    throw RpcError(
      code: RpcError.kInvalidRequest,
      message: 'Invalid Request',
      data: {
        'error': 'Invalid jsonrpc',
        'data': meta,
      },
    );
  }
}