コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public bool ReadYaml(YamlReader reader)
        {
            var language = reader.PeekMap();

            if (!language.HasValue || !language.Value.Key.Equals("Language", StringComparison.Ordinal))
            {
                return(false);
            }

            Language = reader.ReadExpectedMap("Language");

            var fields = reader.PeekMap();

            if (fields.HasValue && fields.Value.Key.Equals("Fields", StringComparison.OrdinalIgnoreCase))
            {
                reader.ReadExpectedMap("Fields");
                while (true)
                {
                    var field = new YamlFieldValue();
                    if (field.ReadYaml(reader))
                    {
                        UnversionedFields.Add(field);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            reader.ReadExpectedMap("Versions");

            while (true)
            {
                var version = new YamlVersion();
                if (version.ReadYaml(reader))
                {
                    Versions.Add(version);
                }
                else
                {
                    break;
                }
            }

            return(true);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
ファイル: YamlItem.cs プロジェクト: OlegJytnik/Rainbow
		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;
				}
			}
		}
コード例 #7
0
ファイル: YamlItem.cs プロジェクト: sebastiantecsi/Rainbow
        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;
                    }
                }
            }
        }