WebRtcHttpMessage.fromJson constructor

WebRtcHttpMessage.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory WebRtcHttpMessage.fromJson(Map<String, dynamic> json) {
  final message = WebRtcHttpMessage();

  // 请求管理字段
  if (json.containsKey('request_id')) {
    message.requestId = json['request_id'] as int;
  }

  // URL 组成字段
  if (json.containsKey('host')) {
    message.host = json['host'] as String;
  }
  if (json.containsKey('port')) {
    message.port = json['port'] as int;
  }
  if (json.containsKey('api_url')) {
    message.apiUrl = json['api_url'] as String;
  }

  // HTTP 协议字段
  if (json.containsKey('method')) {
    message.method = json['method'] as int;
  }
  if (json.containsKey('status')) {
    message.status = json['status'] as int;
  }

  // HTTP Header(支持字符串或数组)
  if (json.containsKey('header') && json['header'] is Map) {
    final headerObj = json['header'] as Map<String, dynamic>;
    for (final key in headerObj.keys) {
      final value = headerObj[key];
      if (value is List) {
        // 数组:添加所有值
        message.header[key] = value.map((e) => e.toString()).toList();
      } else {
        // 字符串:添加单个值
        message.header[key] = [value.toString()];
      }
    }
  }

  // HTTP Query Parameter
  if (json.containsKey('parameter') && json['parameter'] is Map) {
    final paramObj = json['parameter'] as Map<String, dynamic>;
    for (final key in paramObj.keys) {
      message.parameter[key] = paramObj[key].toString();
    }
  }

  // HTTP Body
  if (json.containsKey('body')) {
    message.body = json['body'] as String;
  }

  return message;
}