private static string CanonicalizeHeaders()

in sdk/Util/OssRequestSignerV4.cs [210:243]


        private static string CanonicalizeHeaders(IDictionary<string, string> headers, List<string> additionalHeaders)
        {
            if (headers == null || headers.Count == 0)
                return string.Empty;

            var addHeadersMap = new Dictionary<string, string>();
            foreach (var header in additionalHeaders)
            {
                addHeadersMap[header.ToLowerInvariant()] = string.Empty;
            }

            var sortedHeaderMap = new SortedDictionary<string, string>(StringComparer.Ordinal);
            foreach (var header in headers)
            {
                if (header.Value == null)
                {
                    continue;
                }
                var lowerKey = header.Key.ToLowerInvariant();
                if (IsDefaultSignedHeader(lowerKey) ||
                    addHeadersMap.ContainsKey(lowerKey))
                {
                    sortedHeaderMap[lowerKey] = header.Value.Trim();
                }
            }

            var sb = new StringBuilder();
            foreach (var header in sortedHeaderMap)
            {
                sb.AppendFormat("{0}:{1}\n", header.Key, header.Value.Trim());
            }

            return sb.ToString();
        }