MetadataChange StringToMetadataChange()

in storage/testapp/Assets/Firebase/Sample/Storage/UIHandler.cs [401:434]


    MetadataChange StringToMetadataChange(string metadataString) {
      var metadataChange = new MetadataChange();
      var customMetadata = new Dictionary<string, string>();
      bool hasMetadata = false;
      foreach (var metadataStringLine in metadataString.Split(new char[] { '\n' })) {
        if (metadataStringLine.Trim() == "")
          continue;
        var keyValue = metadataStringLine.Split(new char[] { '=' });
        if (keyValue.Length != 2) {
          DebugLog(String.Format("Ignoring malformed metadata line '{0}' tokens={2}",
                                 metadataStringLine, keyValue.Length));
          continue;
        }
        hasMetadata = true;
        var key = keyValue[0];
        var value = keyValue[1];
        if (key == "CacheControl") {
          metadataChange.CacheControl = value;
        } else if (key == "ContentDisposition") {
          metadataChange.ContentDisposition = value;
        } else if (key == "ContentEncoding") {
          metadataChange.ContentEncoding = value;
        } else if (key == "ContentLanguage") {
          metadataChange.ContentLanguage = value;
        } else if (key == "ContentType") {
          metadataChange.ContentType = value;
        } else {
          customMetadata[key] = value;
        }
      }
      if (customMetadata.Count > 0)
        metadataChange.CustomMetadata = customMetadata;
      return hasMetadata ? metadataChange : null;
    }