Raven.Database.DocumentDatabase.ProcessAttachmentReadVetoes C# (CSharp) Method

ProcessAttachmentReadVetoes() private method

private ProcessAttachmentReadVetoes ( string name, Attachment attachment ) : Attachment
name string
attachment Attachment
return Attachment
		private Attachment ProcessAttachmentReadVetoes(string name, Attachment attachment)
		{
			if (attachment == null)
				return attachment;

			var foundResult = false;
			foreach (var attachmentReadTriggerLazy in AttachmentReadTriggers)
			{
				if (foundResult)
					break;
				var attachmentReadTrigger = attachmentReadTriggerLazy.Value;
				var readVetoResult = attachmentReadTrigger.AllowRead(name, attachment.Data, attachment.Metadata,
																	 ReadOperation.Load);
				switch (readVetoResult.Veto)
				{
					case ReadVetoResult.ReadAllow.Allow:
						break;
					case ReadVetoResult.ReadAllow.Deny:
						attachment.Data = new byte[0];
						attachment.Metadata = new RavenJObject
						                      	{
						                      		{
						                      			"Raven-Read-Veto",
						                      			new RavenJObject
						                      				{
						                      					{"Reason", readVetoResult.Reason},
						                      					{"Trigger", attachmentReadTrigger.ToString()}
						                      				}
						                      			}
						                      	};
						foundResult = true;
						break;
					case ReadVetoResult.ReadAllow.Ignore:
						attachment = null;
						foundResult = true;
						break;
					default:
						throw new ArgumentOutOfRangeException(readVetoResult.Veto.ToString());
				}
			}
			return attachment;
		}