parseRealtimeEnvUrl function

RealtimeUrlConfig parseRealtimeEnvUrl(
  1. String envUrl
)

Parses the env url and returns its components

envUrl Environment url to parse returns Parsed environment url components

Implementation

RealtimeUrlConfig parseRealtimeEnvUrl(String envUrl) {
  String temp;
  String protocol;
  if (envUrl.startsWith('https://')) {
    temp = envUrl.replaceFirst('https://', '');
    protocol = 'https://';
  } else {
    temp = envUrl.replaceFirst('http://', '');
    protocol = 'http://';
  }

  var items = temp.split('.');

  if (items.length == 4) {
    var info = RealtimeUrlConfig.empty()..subdomain = items[0];

    var posIndex = items[3].indexOf('/');
    if (posIndex != -1) {
      items[3] = items[3].substring(0, posIndex);
    }

    items[0] = 'realtime';
    info.realtimeUrl = protocol + items.join('.');

    return info;
  }

  if (items.length == 3) {
    var posIndex = items[2].indexOf('/');
    if (posIndex != -1) {
      var info = RealtimeUrlConfig.empty();

      var baseUrl = items[2].substring(posIndex);
      items[2] = items[2].substring(0, posIndex);
      if (items[0] == 'engine') {
        items[0] = 'realtime';
      } else {
        items.insert(0, 'realtime');
      }

      info.realtimeUrl = protocol + items.join('.');

      if ((baseUrl.startsWith('/e:')) || baseUrl.startsWith('/E:')) {
        var segments = baseUrl.split('/');
        var envIdStr = segments[1];
        var segments2 = envIdStr.split(':');
        info.envId = segments2[1].trim();
      }

      return info;
    } else {
      items.insert(0, 'realtime');
      return RealtimeUrlConfig.empty()
        ..realtimeUrl = protocol + items.join('.');
    }
  }

  return RealtimeUrlConfig.empty();
}