/// <summary> /// Parse the DnToMinId request type response body. /// </summary> /// <param name="rawData">The raw data of response.</param> /// <returns>The DnToMinId request type response body.</returns> public static DnToMinIdResponseBody Parse(byte[] rawData) { DnToMinIdResponseBody responseBody = new DnToMinIdResponseBody(); int index = 0; responseBody.StatusCode = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); responseBody.ErrorCode = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); responseBody.HasMinimalIds = BitConverter.ToBoolean(rawData, index); index += sizeof(bool); if (responseBody.HasMinimalIds) { responseBody.MinimalIdCount = BitConverter.ToUInt32(rawData, index); responseBody.MinimalIds = new uint[(uint)responseBody.MinimalIdCount]; index += sizeof(uint); for (int i = 0; i < responseBody.MinimalIdCount; i++) { responseBody.MinimalIds[i] = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); } } else { responseBody.MinimalIdCount = null; responseBody.MinimalIds = null; } responseBody.AuxiliaryBufferSize = BitConverter.ToUInt32(rawData, index); index += 4; responseBody.AuxiliaryBuffer = new byte[responseBody.AuxiliaryBufferSize]; Array.Copy(rawData, index, responseBody.AuxiliaryBuffer, 0, responseBody.AuxiliaryBufferSize); return(responseBody); }
/// <summary> /// Parse the DnToMinId request type response body. /// </summary> /// <param name="rawData">The raw data of response.</param> /// <returns>The DnToMinId request type response body.</returns> public static DnToMinIdResponseBody Parse(byte[] rawData) { DnToMinIdResponseBody responseBody = new DnToMinIdResponseBody(); int index = 0; responseBody.StatusCode = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); responseBody.ErrorCode = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); responseBody.HasMinimalIds = BitConverter.ToBoolean(rawData, index); index += sizeof(bool); if (responseBody.HasMinimalIds) { responseBody.MinimalIdCount = BitConverter.ToUInt32(rawData, index); responseBody.MinimalIds = new uint[(uint)responseBody.MinimalIdCount]; index += sizeof(uint); for (int i = 0; i < responseBody.MinimalIdCount; i++) { responseBody.MinimalIds[i] = BitConverter.ToUInt32(rawData, index); index += sizeof(uint); } } else { responseBody.MinimalIdCount = null; responseBody.MinimalIds = null; } responseBody.AuxiliaryBufferSize = BitConverter.ToUInt32(rawData, index); index += 4; responseBody.AuxiliaryBuffer = new byte[responseBody.AuxiliaryBufferSize]; Array.Copy(rawData, index, responseBody.AuxiliaryBuffer, 0, responseBody.AuxiliaryBufferSize); return responseBody; }
/// <summary> /// This method is used by the client to map a set of distinguished names to a set of Minimal Entry IDs. /// </summary> /// <param name="distinguishedNameToMIdRequestBody">The DnToMinId request type request body.</param> /// <returns>The response body of the DnToMinId request type.</returns> public DnToMinIdResponseBody DnToMinId(DNToMinIdRequestBody distinguishedNameToMIdRequestBody) { CommonResponse commonResponse = this.SendAddressBookRequest(distinguishedNameToMIdRequestBody, RequestType.DNToMId); DnToMinIdResponseBody distinguishedNameToMinIdResponseBody = DnToMinIdResponseBody.Parse(commonResponse.ResponseBodyRawData); this.VerifyDnToMinIdResponseBody(distinguishedNameToMinIdResponseBody); return(distinguishedNameToMinIdResponseBody); }
/// <summary> /// Verify the DnToMinId response body related requirements. /// </summary> /// <param name="responseBodyDnToMinId">The DnToMinId response body to be verified.</param> private void VerifyDnToMinIdResponseBody(DnToMinIdResponseBody responseBodyDnToMinId) { // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R1286"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R1286 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.StatusCode, typeof(uint), 1286, @"[In DnToMinId Request Type Success Response Body] StatusCode (4 bytes): An unsigned integer that specifies the status of the request."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R1287"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R1287 this.Site.CaptureRequirementIfAreEqual<uint>( 0, responseBodyDnToMinId.StatusCode, 1287, @"[In DnToMinId Request Type Success Response Body] [StatusCode] This field MUST be set to 0x00000000."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R430"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R430 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.ErrorCode, typeof(uint), 430, @"[In DnToMinId Request Type Success Response Body] ErrorCode (4 bytes): An unsigned integer that specifies the return status of the operation."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R431"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R431 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.HasMinimalIds, typeof(bool), 431, @"[In DnToMinId Request Type Success Response Body] HasMinimalIds (1 byte): A Boolean value that specifies whether the MinimalIdCount and MinimalIds fields are present."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R432"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R432 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.MinimalIdCount, typeof(uint), 432, @"[In DnToMinId Request Type Success Response Body] MinimalIdCount (optional) (4 bytes): An unsigned integer that specifies the number of structures in the MinimalIds field."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R440"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R440 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.AuxiliaryBufferSize, typeof(uint), 440, @"[In DnToMinId Request Type Success Response Body] AuxiliaryBufferSize (4 bytes): An unsigned integer that specifies the size, in bytes, of the AuxiliaryBuffer field."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R441"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R441 this.Site.CaptureRequirementIfIsInstanceOfType( responseBodyDnToMinId.AuxiliaryBuffer, typeof(byte[]), 441, @"[In DnToMinId Request Type Success Response Body] AuxiliaryBuffer (variable): An array of bytes that constitute the auxiliary payload data returned from the server."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R442"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R442 this.Site.CaptureRequirementIfAreEqual<uint>( responseBodyDnToMinId.AuxiliaryBufferSize, (uint)responseBodyDnToMinId.AuxiliaryBuffer.Length, 442, @"[In DnToMinId Request Type Success Response Body] [AuxiliaryBuffer] The size of this field, in bytes, is specified by the AuxiliaryBufferSize field."); if (responseBodyDnToMinId.HasMinimalIds) { // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R433"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R433 // Because the HasMinimalIds field is true, so if the MinimalIdCount field has value, then R433 will be verified. this.Site.CaptureRequirementIfIsNotNull( responseBodyDnToMinId.MinimalIdCount, 433, @"[In DnToMinId Request Type Success Response Body] [MinimalIdCount] This field is present when the value of the HasMinimalIds field is nonzero."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMAPIHTTP_R1288"); // Verify MS-OXCMAPIHTTP requirement: MS-OXCMAPIHTTP_R1288 // Because the HasMinimalIds field is true, so if the MinimalIds field has value, then R1288 will be verified. this.Site.CaptureRequirementIfIsNotNull( responseBodyDnToMinId.MinimalIds, 1288, @"[In DnToMinId Request Type Success Response Body] [MinimalIds] This field is present when the value of the HasMinimalIds field is nonzero."); } }