public virtual bool ReadYaml(YamlReader reader) { var version = reader.PeekMap(); if (!version.HasValue || !version.Value.Key.Equals("Version", StringComparison.Ordinal)) { return(false); } VersionNumber = int.Parse(reader.ReadExpectedMap("Version")); var fields = reader.PeekMap(); if (fields.HasValue && fields.Value.Key.Equals("Fields", StringComparison.Ordinal)) { reader.ReadMap(); while (true) { var field = new YamlFieldValue(); if (field.ReadYaml(reader)) { Fields.Add(field); } else { break; } } } return(true); }
public virtual IRoleData ReadSerializedRole(Stream dataStream, string serializedItemId) { Assert.ArgumentNotNull(dataStream, nameof(dataStream)); try { using (var reader = new YamlReader(dataStream, 4096, true)) { string roleName = reader.ReadExpectedMap("Role"); var memberOfRoles = new List <string>(); var roleMembershipNode = reader.PeekMap(); if (roleMembershipNode.HasValue && roleMembershipNode.Value.Key.Equals("MemberOf")) { reader.ReadMap(); while (true) { var memberOfRole = reader.PeekMap(); if (!memberOfRole.HasValue || !memberOfRole.Value.Key.Equals("Role", StringComparison.Ordinal)) { break; } reader.ReadMap(); memberOfRoles.Add(memberOfRole.Value.Value); } } return(new SerializedRoleData(roleName, memberOfRoles.ToArray(), serializedItemId)); } } catch (Exception exception) { throw new YamlFormatException("Error parsing YAML " + serializedItemId, exception); } }
public bool ReadYaml(YamlReader reader) { var id = reader.PeekMap(); if (!id.HasValue) { return(false); } var key = id.Value.Key; if (!key.Equals("ID", StringComparison.Ordinal)) { if (key.Equals("Languages", StringComparison.Ordinal) || key.Equals("Language", StringComparison.Ordinal) || key.Equals("Version", StringComparison.Ordinal) || key.Equals("Versions", StringComparison.Ordinal)) { return(false); } throw new FormatException(reader.CreateErrorMessage("Cannot read field value. Expected 'ID' map, found '" + id.Value.Key + "' instead.")); } Id = reader.ReadExpectedGuidMap("ID"); var hint = reader.PeekMap(); if (hint.HasValue && hint.Value.Key.Equals("Hint")) { NameHint = reader.ReadExpectedMap("Hint"); } var blob = reader.PeekMap(); if (blob.HasValue && blob.Value.Key.Equals("BlobID")) { BlobId = reader.ReadExpectedGuidMap("BlobID"); } var type = reader.PeekMap(); if (type.HasValue && type.Value.Key.Equals("Type")) { reader.ReadMap(); Type = type.Value.Value; } Value = reader.ReadExpectedMap("Value"); return(true); }
public virtual SyncUser ReadSerializedUser(Stream dataStream, string serializedItemId) { Assert.ArgumentNotNull(dataStream, nameof(dataStream)); try { using (var reader = new YamlReader(dataStream, 4096, true)) { var user = new SyncUser(); user.UserName = reader.ReadExpectedMap("Username"); user.Email = reader.ReadExpectedMap("Email"); user.Comment = reader.ReadExpectedMap("Comment"); user.CreationDate = DateTime.ParseExact(reader.ReadExpectedMap("Created"), "o", CultureInfo.InvariantCulture, DateTimeStyles.None); user.IsApproved = bool.Parse(reader.ReadExpectedMap("IsApproved")); var propertiesNode = reader.PeekMap(); if (propertiesNode.HasValue && propertiesNode.Value.Key.Equals("Properties")) { reader.ReadMap(); while (true) { var propertyName = reader.PeekMap(); if (propertyName == null || !propertyName.Value.Key.Equals("Key")) { break; } reader.ReadMap(); var rawValue = reader.ReadExpectedMap("Value"); var valueTypeString = reader.ReadExpectedMap("ValueType"); var value = ReadPropertyValueObject(propertyName.Value.Value, valueTypeString, rawValue); bool propertyIsCustom = bool.Parse(reader.ReadExpectedMap("IsCustom")); user.ProfileProperties.Add(new SyncProfileProperty(propertyName.Value.Value, value, propertyIsCustom)); } } var rolesNode = reader.PeekMap(); if (rolesNode.HasValue && rolesNode.Value.Key.Equals("Roles")) { reader.ReadMap(); while (true) { var roleName = reader.ReadMap(); if (string.IsNullOrWhiteSpace(roleName?.Value)) { break; } user.Roles.Add(roleName.Value.Value); } } return(user); } } catch (Exception exception) { throw new YamlFormatException("Error parsing YAML " + serializedItemId, exception); } }
public virtual void ReadYaml(YamlReader reader) { Id = reader.ReadExpectedGuidMap("ID"); ParentId = reader.ReadExpectedGuidMap("Parent"); TemplateId = reader.ReadExpectedGuidMap("Template"); Path = reader.ReadExpectedMap("Path"); var dbName = reader.PeekMap(); if (dbName.HasValue && dbName.Value.Key.Equals("DB")) //could be missing if serialized with 1.0.x { reader.ReadMap(); DatabaseName = dbName.Value.Value; } var branch = reader.PeekMap(); if (branch.HasValue && branch.Value.Key.Equals("BranchID")) { reader.ReadMap(); BranchId = Guid.Parse(branch.Value.Value); } var sharedFields = reader.PeekMap(); if (sharedFields.HasValue && sharedFields.Value.Key.Equals("SharedFields")) { reader.ReadMap(); while (true) { var field = new YamlFieldValue(); if (field.ReadYaml(reader)) SharedFields.Add(field); else break; } } var languages = reader.PeekMap(); if (languages.HasValue && languages.Value.Key.Equals("Languages")) { reader.ReadMap(); while (true) { var language = new YamlLanguage(); if (language.ReadYaml(reader)) Languages.Add(language); else break; } } }
public virtual void ReadYaml(YamlReader reader) { Id = reader.ReadExpectedGuidMap("ID"); ParentId = reader.ReadExpectedGuidMap("Parent"); TemplateId = reader.ReadExpectedGuidMap("Template"); Path = reader.ReadExpectedMap("Path"); var dbName = reader.PeekMap(); if (dbName.HasValue && dbName.Value.Key.Equals("DB")) //could be missing if serialized with 1.0.x { reader.ReadMap(); DatabaseName = dbName.Value.Value; } var branch = reader.PeekMap(); if (branch.HasValue && branch.Value.Key.Equals("BranchID")) { reader.ReadMap(); BranchId = Guid.Parse(branch.Value.Value); } var sharedFields = reader.PeekMap(); if (sharedFields.HasValue && sharedFields.Value.Key.Equals("SharedFields")) { reader.ReadMap(); while (true) { var field = new YamlFieldValue(); if (field.ReadYaml(reader)) { SharedFields.Add(field); } else { break; } } } var languages = reader.PeekMap(); if (languages.HasValue && languages.Value.Key.Equals("Languages")) { reader.ReadMap(); while (true) { var language = new YamlLanguage(); if (language.ReadYaml(reader)) { Languages.Add(language); } else { break; } } } }