private byte[] Session2ReadStream(string objKey, PropertyTag propertyTag, out bool isPropertyFound)
{
Dictionary<string, uint> objHandles = new Dictionary<string, uint>();
uint logonHandle;
uint folderHandle1;
uint folderHandle2;
uint msgHandle1;
uint msgHandle2;
uint attachmentHandle1;
uint attachmentHandle2;
OxcropsClient tempClient = this.oxcropsClient;
this.oxcropsClient = this.oxcropsClientSession2;
try
{
#region Preparation for getting object handles
RopLogonResponse logonRes;
RopOpenFolderResponse openFolderRes;
RopOpenMessageResponse openMsgRes;
RopOpenAttachmentResponse openAttRes;
// Logon to mailbox.
logonHandle = this.RopLogon(LogonType.Mailbox, out logonRes, Common.GetConfigurationPropertyValue("UserEssdn", this.Site), true);
objHandles.Add("Logon", logonHandle);
// Open inbox folder.
uint inboxHandle = this.RopOpenFolder(logonHandle, out openFolderRes, logonRes.FolderIds[4], true);
// Open testRoot folder.
uint testRootHandle = this.RopOpenFolder(inboxHandle, out openFolderRes, rootFolderId, true);
// Open testFolder1.
folderHandle1 = this.RopOpenFolder(testRootHandle, out openFolderRes, cprptFolderId[0], true);
objHandles.Add("Folder1", folderHandle1);
// Open testFolder2.
folderHandle2 = this.RopOpenFolder(testRootHandle, out openFolderRes, cprptFolderId[1], true);
objHandles.Add("Folder2", folderHandle2);
// For first folder open message1.
msgHandle1 = this.RopOpenMessage(folderHandle1, cprptFolderId[0], cprptMessageId[0], out openMsgRes, true);
objHandles.Add("Message1", msgHandle1);
// For first folder open message2.
msgHandle2 = this.RopOpenMessage(folderHandle1, cprptFolderId[0], cprptMessageId[1], out openMsgRes, true);
objHandles.Add("Message2", msgHandle2);
// For first message open attachment1.
attachmentHandle1 = this.RopOpenAttachment(msgHandle1, cprptAttachmentId[0], out openAttRes, true);
objHandles.Add("Attachment1", attachmentHandle1);
// For first message open attachment2.
attachmentHandle2 = this.RopOpenAttachment(msgHandle1, cprptAttachmentId[1], out openAttRes, true);
objHandles.Add("Attachment2", attachmentHandle2);
#endregion
if (!objHandles.ContainsKey(objKey))
{
this.oxcropsClient = tempClient;
Site.Assert.Fail("Invalid Object key for getting its Property value");
}
uint objHandle = objHandles[objKey];
RopGetPropertiesAllResponse getAllRes;
getAllRes = this.RopGetPropertiesAll(objHandle, 0, 0);
foreach (TaggedPropertyValue taggedValue in getAllRes.PropertyValues)
{
if (taggedValue.PropertyTag.PropertyId == propertyTag.PropertyId)
{
isPropertyFound = true;
// Open stream.
RopOpenStreamResponse openStreamRes;
uint streamHandle = this.RopOpenStream(objHandle, out openStreamRes, propertyTag, ConstValues.OpenModeFlagsReadWrite, true);
// Read stream.
RopReadStreamResponse readStreamRes;
readStreamRes = this.RopReadStream(streamHandle, ConstValues.StreamLengthByteCountIndicator, 0x70000000, true);
return readStreamRes.Data;
}
}
isPropertyFound = false;
return new byte[0];
}
catch (System.IO.IOException exception)
{
this.Site.Log.Add(LogEntryKind.Comment, exception.Message);
isPropertyFound = false;
return null;
}
finally
{
this.oxcropsClient = tempClient;
}
}