1package azblob 2 3import ( 4 "context" 5 6 "github.com/Azure/azure-pipeline-go/pipeline" 7) 8 9// NewUniqueRequestIDPolicyFactory creates a UniqueRequestIDPolicyFactory object 10// that sets the request's x-ms-client-request-id header if it doesn't already exist. 11func NewUniqueRequestIDPolicyFactory() pipeline.Factory { 12 return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc { 13 // This is Policy's Do method: 14 return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { 15 id := request.Header.Get(xMsClientRequestID) 16 if id == "" { // Add a unique request ID if the caller didn't specify one already 17 request.Header.Set(xMsClientRequestID, newUUID().String()) 18 } 19 return next.Do(ctx, request) 20 } 21 }) 22} 23 24const xMsClientRequestID = "x-ms-client-request-id" 25