StorageRequestValidationPipelinePolicy
Pipeline policy to verify x-ms-client-request-id and x-ms-client-return-request-id
headers that are echoed back from a request match.
using Azure.Core;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Azure.Storage
{
internal class StorageRequestValidationPipelinePolicy
{
public StorageRequestValidationPipelinePolicy()
: this()
{
}
public override void OnReceivedResponse(HttpMessage message)
{
if (message.get_HasResponse()) {
RequestHeaders headers = message.get_Request().get_Headers();
string text = default(string);
if (headers.TryGetValue("x-ms-client-request-id", ref text)) {
ResponseHeaders headers2 = message.get_Response().get_Headers();
IEnumerable<string> source = default(IEnumerable<string>);
if (headers2.TryGetValues("x-ms-client-request-id", ref source) && !string.Equals(text, source.First(), StringComparison.OrdinalIgnoreCase))
throw Errors.ClientRequestIdMismatch(message.get_Response(), source.First(), text);
}
}
}
}
}