< Summary

Class:Azure.Core.Pipeline.ContentTypeUtilities
Assembly:Azure.ResourceManager.Resources
File(s):C:\Git\azure-sdk-for-net\sdk\core\Azure.Core\src\Shared\ContentTypeUtilities.cs
Covered lines:17
Uncovered lines:2
Coverable lines:19
Total lines:58
Line coverage:89.4% (17 of 19)
Covered branches:13
Total branches:18
Branch coverage:72.2% (13 of 18)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
TryGetTextEncoding(...)-89.47%72.22%

File(s)

C:\Git\azure-sdk-for-net\sdk\core\Azure.Core\src\Shared\ContentTypeUtilities.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4#nullable disable
 5
 6using System;
 7using System.Text;
 8
 9namespace Azure.Core.Pipeline
 10{
 11    internal static class ContentTypeUtilities
 12    {
 13        public static bool TryGetTextEncoding(string contentType, out Encoding encoding)
 14        {
 15            const string charsetMarker = "; charset=";
 16            const string utf8Charset = "utf-8";
 17            const string textContentTypePrefix = "text/";
 18            const string jsonSuffix = "json";
 19            const string appJsonPrefix = "application/json";
 20            const string xmlSuffix = "xml";
 21            const string urlEncodedSuffix = "-urlencoded";
 22
 23            // Default is technically US-ASCII, but will default to UTF-8 which is a superset.
 24            const string appFormUrlEncoded = "application/x-www-form-urlencoded";
 25
 12026            if (contentType == null)
 27            {
 428                encoding = null;
 429                return false;
 30            }
 31
 11632            var charsetIndex = contentType.IndexOf(charsetMarker, StringComparison.OrdinalIgnoreCase);
 11633            if (charsetIndex != -1)
 34            {
 10835                ReadOnlySpan<char> charset = contentType.AsSpan().Slice(charsetIndex + charsetMarker.Length);
 10836                if (charset.StartsWith(utf8Charset.AsSpan(), StringComparison.OrdinalIgnoreCase))
 37                {
 10838                    encoding = Encoding.UTF8;
 10839                    return true;
 40                }
 41            }
 42
 843            if (contentType.StartsWith(textContentTypePrefix, StringComparison.OrdinalIgnoreCase) ||
 844                contentType.EndsWith(jsonSuffix, StringComparison.OrdinalIgnoreCase) ||
 845                contentType.EndsWith(xmlSuffix, StringComparison.OrdinalIgnoreCase) ||
 846                contentType.EndsWith(urlEncodedSuffix, StringComparison.OrdinalIgnoreCase) ||
 847                contentType.StartsWith(appJsonPrefix, StringComparison.OrdinalIgnoreCase) ||
 848                contentType.StartsWith(appFormUrlEncoded, StringComparison.OrdinalIgnoreCase))
 49            {
 850                encoding = Encoding.UTF8;
 851                return true;
 52            }
 53
 054            encoding = null;
 055            return false;
 56        }
 57    }
 58}

Methods/Properties

TryGetTextEncoding(...)