aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Azure/azure-storage-blob-go/2018-03-28/azblob/zc_policy_unique_request_id.go
blob: a75c7d1d2e185fbbeeef44fe707b2f4c150f428c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package azblob

import (
    "context"

    "github.com/Azure/azure-pipeline-go/pipeline"
)

// NewUniqueRequestIDPolicyFactory creates a UniqueRequestIDPolicyFactory object
// that sets the request's x-ms-client-request-id header if it doesn't already exist.
func NewUniqueRequestIDPolicyFactory() pipeline.Factory {
    return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc {
        // This is Policy's Do method:
        return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) {
            id := request.Header.Get(xMsClientRequestID)
            if id == "" { // Add a unique request ID if the caller didn't specify one already
                request.Header.Set(xMsClientRequestID, newUUID().String())
            }
            return next.Do(ctx, request)
        }
    })
}

const xMsClientRequestID = "x-ms-client-request-id"