LoadFromXml static method

Loads DocumentSharingLocation instance from XML. The reader.

Implementation

static Future<DocumentSharingLocation> LoadFromXml(
    EwsXmlReader reader) async {
  DocumentSharingLocation location = new DocumentSharingLocation._();

  do {
    await reader.Read();

    if (reader.NodeType == XmlNodeType.Element) {
      switch (reader.LocalName) {
        case XmlElementNames.ServiceUrl:
          location.ServiceUrl = await reader.ReadElementValue<String>();
          break;

        case XmlElementNames.LocationUrl:
          location.LocationUrl = await reader.ReadElementValue<String>();
          break;

        case XmlElementNames.DisplayName:
          location.DisplayName = await reader.ReadElementValue<String>();
          break;

        case XmlElementNames.SupportedFileExtensions:
          List<String?> fileExtensions = <String?>[];
          await reader.Read();
          while (reader.IsStartElementWithNamespace(
              XmlNamespace.Autodiscover, XmlElementNames.FileExtension)) {
            String? extension = await reader.ReadElementValue<String>();
            fileExtensions.add(extension);
            await reader.Read();
          }

          location.SupportedFileExtensions = fileExtensions;
          break;

        case XmlElementNames.ExternalAccessAllowed:
          location.ExternalAccessAllowed =
              await reader.ReadElementValue<bool>();
          break;

        case XmlElementNames.AnonymousAccessAllowed:
          location.AnonymousAccessAllowed =
              await reader.ReadElementValue<bool>();
          break;

        case XmlElementNames.CanModifyPermissions:
          location.CanModifyPermissions =
              await reader.ReadElementValue<bool>();
          break;

        case XmlElementNames.IsDefault:
          location.IsDefault = await reader.ReadElementValue<bool>();
          break;

        default:
          break;
      }
    }
  } while (!reader.IsEndElementWithNamespace(
      XmlNamespace.Autodiscover, XmlElementNames.DocumentSharingLocation));

  return location;
}