< Summary

Class:Azure.DigitalTwins.Core.QueryChargeHelper
Assembly:Azure.DigitalTwins.Core
File(s):C:\Git\azure-sdk-for-net\sdk\digitaltwins\Azure.DigitalTwins.Core\src\Queries\QueryChargeHelper.cs
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:68
Line coverage:0% (0 of 5)
Covered branches:0
Total branches:2
Branch coverage:0% (0 of 2)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
TryGetQueryCharge(...)-0%0%

File(s)

C:\Git\azure-sdk-for-net\sdk\digitaltwins\Azure.DigitalTwins.Core\src\Queries\QueryChargeHelper.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using Azure.Core;
 5
 6namespace Azure.DigitalTwins.Core
 7{
 8    /// <summary>
 9    /// A helper class for working with the query APIs for digital twins.
 10    /// </summary>
 11    public static class QueryChargeHelper
 12    {
 13        /// <summary>
 14        /// A constant that is used to as the query-charge header field in the query page response.
 15        /// </summary>
 16        private const string QueryChargeHeader = "query-charge";
 17
 18        /// <summary>
 19        /// Extract the query-charge field from a page header.
 20        /// </summary>
 21        /// <param name="page">The page that contains the query-charge header.</param>
 22        /// <param name="queryCharge">The query charge extracted from the header.</param>
 23        /// <returns>True if the header contains a query-charge field, otherwise false.</returns>
 24        /// <remarks>
 25        /// For more samples, see <see href="https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/digitaltwins/Azu
 26        /// </remarks>
 27        /// <code snippet="Snippet:DigitalTwinsSampleQueryTwinsWithQueryCharge">
 28        /// // This code snippet demonstrates how you could extract the query charges incurred when calling
 29        /// // the query API. It iterates over the response pages first to access to the query-charge header,
 30        /// // and then the digital twin results within each page.
 31        ///
 32        /// AsyncPageable&lt;string&gt; asyncPageableResponseWithCharge = client.QueryAsync(&quot;SELECT * FROM digitalt
 33        /// int pageNum = 0;
 34        ///
 35        /// // The &quot;await&quot; keyword here is required as a call is made when fetching a new page.
 36        /// await foreach (Page&lt;string&gt; page in asyncPageableResponseWithCharge.AsPages())
 37        /// {
 38        ///     Console.WriteLine($&quot;Page {++pageNum} results:&quot;);
 39        ///
 40        ///     // Extract the query-charge header from the page
 41        ///     if (QueryChargeHelper.TryGetQueryCharge(page, out float queryCharge))
 42        ///     {
 43        ///         Console.WriteLine($&quot;Query charge was: {queryCharge}&quot;);
 44        ///     }
 45        ///
 46        ///     // Iterate over the twin instances.
 47        ///     // The &quot;await&quot; keyword is not required here as the paged response is local.
 48        ///     foreach (string response in page.Values)
 49        ///     {
 50        ///         BasicDigitalTwin twin = JsonSerializer.Deserialize&lt;BasicDigitalTwin&gt;(response);
 51        ///         Console.WriteLine($&quot;Found digital twin &apos;{twin.Id}&apos;&quot;);
 52        ///     }
 53        /// }
 54        /// </code>
 55        public static bool TryGetQueryCharge(Page<string> page, out float queryCharge)
 56        {
 057            Argument.AssertNotNull(page, nameof(page));
 58
 059            if (!page.GetRawResponse().Headers.TryGetValue(QueryChargeHeader, out string queryChargeHeaderValue))
 60            {
 061                queryCharge = 0f;
 062                return false;
 63            }
 64
 065            return float.TryParse(queryChargeHeaderValue, out queryCharge);
 66        }
 67    }
 68}

Methods/Properties

TryGetQueryCharge(...)