@azure-typespec/http-client-csharp-mgmt 1.0.0-alpha.20250409.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/emitter/emitter.d.ts +4 -0
  2. package/dist/emitter/emitter.d.ts.map +1 -0
  3. package/dist/emitter/emitter.js +77 -0
  4. package/dist/emitter/emitter.js.map +1 -0
  5. package/dist/emitter/index.d.ts +2 -0
  6. package/dist/emitter/index.d.ts.map +1 -0
  7. package/dist/emitter/index.js +4 -0
  8. package/dist/emitter/index.js.map +1 -0
  9. package/dist/emitter/resource-type.d.ts +2 -0
  10. package/dist/emitter/resource-type.d.ts.map +1 -0
  11. package/dist/emitter/resource-type.js +31 -0
  12. package/dist/emitter/resource-type.js.map +1 -0
  13. package/dist/emitter/sdk-context-options.d.ts +3 -0
  14. package/dist/emitter/sdk-context-options.d.ts.map +1 -0
  15. package/dist/emitter/sdk-context-options.js +23 -0
  16. package/dist/emitter/sdk-context-options.js.map +1 -0
  17. package/dist/generator/Azure.Core.dll +0 -0
  18. package/dist/generator/Azure.Generator.Mgmt.deps.json +998 -0
  19. package/dist/generator/Azure.Generator.Mgmt.dll +0 -0
  20. package/dist/generator/Azure.Generator.Mgmt.pdb +0 -0
  21. package/dist/generator/Azure.Generator.Mgmt.xml +818 -0
  22. package/dist/generator/Azure.Generator.dll +0 -0
  23. package/dist/generator/Azure.Generator.pdb +0 -0
  24. package/dist/generator/Azure.Generator.xml +163 -0
  25. package/dist/generator/Azure.ResourceManager.dll +0 -0
  26. package/dist/generator/CommandLine.dll +0 -0
  27. package/dist/generator/Humanizer.dll +0 -0
  28. package/dist/generator/Microsoft.Bcl.AsyncInterfaces.dll +0 -0
  29. package/dist/generator/Microsoft.Build.Framework.dll +0 -0
  30. package/dist/generator/Microsoft.Build.dll +0 -0
  31. package/dist/generator/Microsoft.CodeAnalysis.CSharp.Workspaces.dll +0 -0
  32. package/dist/generator/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  33. package/dist/generator/Microsoft.CodeAnalysis.Workspaces.dll +0 -0
  34. package/dist/generator/Microsoft.CodeAnalysis.dll +0 -0
  35. package/dist/generator/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  36. package/dist/generator/Microsoft.NET.StringTools.dll +0 -0
  37. package/dist/generator/Microsoft.TypeSpec.Generator.ClientModel.dll +0 -0
  38. package/dist/generator/Microsoft.TypeSpec.Generator.Input.dll +0 -0
  39. package/dist/generator/Microsoft.TypeSpec.Generator.dll +0 -0
  40. package/dist/generator/Microsoft.TypeSpec.Generator.runtimeconfig.json +12 -0
  41. package/dist/generator/NuGet.Common.dll +0 -0
  42. package/dist/generator/NuGet.Configuration.dll +0 -0
  43. package/dist/generator/NuGet.Frameworks.dll +0 -0
  44. package/dist/generator/Shared/Core/AppContextSwitchHelper.cs +42 -0
  45. package/dist/generator/Shared/Core/AsyncLockWithValue.cs +260 -0
  46. package/dist/generator/Shared/Core/AzureKeyCredentialPolicy.cs +50 -0
  47. package/dist/generator/Shared/Core/ClientDiagnostics.cs +73 -0
  48. package/dist/generator/Shared/Core/DiagnosticScope.cs +473 -0
  49. package/dist/generator/Shared/Core/DiagnosticScopeFactory.cs +104 -0
  50. package/dist/generator/Shared/Core/FixedDelayWithNoJitterStrategy.cs +26 -0
  51. package/dist/generator/Shared/Core/HttpMessageSanitizer.cs +198 -0
  52. package/dist/generator/Shared/Core/IOperationSource.cs +14 -0
  53. package/dist/generator/Shared/Core/NextLinkOperationImplementation.cs +690 -0
  54. package/dist/generator/Shared/Core/OperationFinalStateVia.cs +16 -0
  55. package/dist/generator/Shared/Core/OperationInternal.cs +256 -0
  56. package/dist/generator/Shared/Core/OperationInternalBase.cs +234 -0
  57. package/dist/generator/Shared/Core/OperationInternalOfT.cs +422 -0
  58. package/dist/generator/Shared/Core/OperationPoller.cs +114 -0
  59. package/dist/generator/Shared/Core/RawRequestUriBuilder.cs +192 -0
  60. package/dist/generator/Shared/Core/SequentialDelayStrategy.cs +38 -0
  61. package/dist/generator/Shared/Core/TaskExtensions.cs +313 -0
  62. package/dist/generator/Shared/Core/VoidValue.cs +10 -0
  63. package/dist/generator/System.ClientModel.dll +0 -0
  64. package/dist/generator/System.ComponentModel.Composition.dll +0 -0
  65. package/dist/generator/System.Composition.AttributedModel.dll +0 -0
  66. package/dist/generator/System.Composition.Convention.dll +0 -0
  67. package/dist/generator/System.Composition.Hosting.dll +0 -0
  68. package/dist/generator/System.Composition.Runtime.dll +0 -0
  69. package/dist/generator/System.Composition.TypedParts.dll +0 -0
  70. package/dist/generator/System.Configuration.ConfigurationManager.dll +0 -0
  71. package/dist/generator/System.Diagnostics.EventLog.dll +0 -0
  72. package/dist/generator/System.IO.Pipelines.dll +0 -0
  73. package/dist/generator/System.Memory.Data.dll +0 -0
  74. package/dist/generator/System.Reflection.MetadataLoadContext.dll +0 -0
  75. package/dist/generator/System.Security.Cryptography.ProtectedData.dll +0 -0
  76. package/dist/generator/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  77. package/dist/generator/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  78. package/dist/generator/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  79. package/dist/generator/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
  80. package/dist/generator/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  81. package/dist/generator/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  82. package/dist/generator/de/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  83. package/dist/generator/de/Microsoft.CodeAnalysis.resources.dll +0 -0
  84. package/dist/generator/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  85. package/dist/generator/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  86. package/dist/generator/es/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  87. package/dist/generator/es/Microsoft.CodeAnalysis.resources.dll +0 -0
  88. package/dist/generator/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  89. package/dist/generator/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  90. package/dist/generator/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  91. package/dist/generator/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
  92. package/dist/generator/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  93. package/dist/generator/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  94. package/dist/generator/it/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  95. package/dist/generator/it/Microsoft.CodeAnalysis.resources.dll +0 -0
  96. package/dist/generator/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  97. package/dist/generator/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  98. package/dist/generator/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  99. package/dist/generator/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
  100. package/dist/generator/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  101. package/dist/generator/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  102. package/dist/generator/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  103. package/dist/generator/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
  104. package/dist/generator/net8.0/Azure.Core.dll +0 -0
  105. package/dist/generator/net8.0/Azure.Generator.Mgmt.deps.json +998 -0
  106. package/dist/generator/net8.0/Azure.Generator.Mgmt.dll +0 -0
  107. package/dist/generator/net8.0/Azure.Generator.Mgmt.pdb +0 -0
  108. package/dist/generator/net8.0/Azure.Generator.Mgmt.xml +818 -0
  109. package/dist/generator/net8.0/Azure.Generator.dll +0 -0
  110. package/dist/generator/net8.0/Azure.Generator.pdb +0 -0
  111. package/dist/generator/net8.0/Azure.Generator.xml +163 -0
  112. package/dist/generator/net8.0/Azure.ResourceManager.dll +0 -0
  113. package/dist/generator/net8.0/CommandLine.dll +0 -0
  114. package/dist/generator/net8.0/Humanizer.dll +0 -0
  115. package/dist/generator/net8.0/Microsoft.Bcl.AsyncInterfaces.dll +0 -0
  116. package/dist/generator/net8.0/Microsoft.Build.Framework.dll +0 -0
  117. package/dist/generator/net8.0/Microsoft.Build.dll +0 -0
  118. package/dist/generator/net8.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll +0 -0
  119. package/dist/generator/net8.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  120. package/dist/generator/net8.0/Microsoft.CodeAnalysis.Workspaces.dll +0 -0
  121. package/dist/generator/net8.0/Microsoft.CodeAnalysis.dll +0 -0
  122. package/dist/generator/net8.0/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  123. package/dist/generator/net8.0/Microsoft.NET.StringTools.dll +0 -0
  124. package/dist/generator/net8.0/Microsoft.TypeSpec.Generator.ClientModel.dll +0 -0
  125. package/dist/generator/net8.0/Microsoft.TypeSpec.Generator.Input.dll +0 -0
  126. package/dist/generator/net8.0/Microsoft.TypeSpec.Generator.dll +0 -0
  127. package/dist/generator/net8.0/NuGet.Common.dll +0 -0
  128. package/dist/generator/net8.0/NuGet.Configuration.dll +0 -0
  129. package/dist/generator/net8.0/NuGet.Frameworks.dll +0 -0
  130. package/dist/generator/net8.0/Shared/Core/AppContextSwitchHelper.cs +42 -0
  131. package/dist/generator/net8.0/Shared/Core/AsyncLockWithValue.cs +260 -0
  132. package/dist/generator/net8.0/Shared/Core/AzureKeyCredentialPolicy.cs +50 -0
  133. package/dist/generator/net8.0/Shared/Core/ClientDiagnostics.cs +73 -0
  134. package/dist/generator/net8.0/Shared/Core/DiagnosticScope.cs +473 -0
  135. package/dist/generator/net8.0/Shared/Core/DiagnosticScopeFactory.cs +104 -0
  136. package/dist/generator/net8.0/Shared/Core/FixedDelayWithNoJitterStrategy.cs +26 -0
  137. package/dist/generator/net8.0/Shared/Core/HttpMessageSanitizer.cs +198 -0
  138. package/dist/generator/net8.0/Shared/Core/IOperationSource.cs +14 -0
  139. package/dist/generator/net8.0/Shared/Core/NextLinkOperationImplementation.cs +690 -0
  140. package/dist/generator/net8.0/Shared/Core/OperationFinalStateVia.cs +16 -0
  141. package/dist/generator/net8.0/Shared/Core/OperationInternal.cs +256 -0
  142. package/dist/generator/net8.0/Shared/Core/OperationInternalBase.cs +234 -0
  143. package/dist/generator/net8.0/Shared/Core/OperationInternalOfT.cs +422 -0
  144. package/dist/generator/net8.0/Shared/Core/OperationPoller.cs +114 -0
  145. package/dist/generator/net8.0/Shared/Core/RawRequestUriBuilder.cs +192 -0
  146. package/dist/generator/net8.0/Shared/Core/SequentialDelayStrategy.cs +38 -0
  147. package/dist/generator/net8.0/Shared/Core/TaskExtensions.cs +313 -0
  148. package/dist/generator/net8.0/Shared/Core/VoidValue.cs +10 -0
  149. package/dist/generator/net8.0/System.ClientModel.dll +0 -0
  150. package/dist/generator/net8.0/System.ComponentModel.Composition.dll +0 -0
  151. package/dist/generator/net8.0/System.Composition.AttributedModel.dll +0 -0
  152. package/dist/generator/net8.0/System.Composition.Convention.dll +0 -0
  153. package/dist/generator/net8.0/System.Composition.Hosting.dll +0 -0
  154. package/dist/generator/net8.0/System.Composition.Runtime.dll +0 -0
  155. package/dist/generator/net8.0/System.Composition.TypedParts.dll +0 -0
  156. package/dist/generator/net8.0/System.Configuration.ConfigurationManager.dll +0 -0
  157. package/dist/generator/net8.0/System.Diagnostics.EventLog.dll +0 -0
  158. package/dist/generator/net8.0/System.IO.Pipelines.dll +0 -0
  159. package/dist/generator/net8.0/System.Memory.Data.dll +0 -0
  160. package/dist/generator/net8.0/System.Reflection.MetadataLoadContext.dll +0 -0
  161. package/dist/generator/net8.0/System.Security.Cryptography.ProtectedData.dll +0 -0
  162. package/dist/generator/net8.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  163. package/dist/generator/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  164. package/dist/generator/net8.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  165. package/dist/generator/net8.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
  166. package/dist/generator/net8.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  167. package/dist/generator/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  168. package/dist/generator/net8.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  169. package/dist/generator/net8.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
  170. package/dist/generator/net8.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  171. package/dist/generator/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  172. package/dist/generator/net8.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  173. package/dist/generator/net8.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
  174. package/dist/generator/net8.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  175. package/dist/generator/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  176. package/dist/generator/net8.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  177. package/dist/generator/net8.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
  178. package/dist/generator/net8.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  179. package/dist/generator/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  180. package/dist/generator/net8.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  181. package/dist/generator/net8.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
  182. package/dist/generator/net8.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  183. package/dist/generator/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  184. package/dist/generator/net8.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  185. package/dist/generator/net8.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
  186. package/dist/generator/net8.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  187. package/dist/generator/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  188. package/dist/generator/net8.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  189. package/dist/generator/net8.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
  190. package/dist/generator/net8.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  191. package/dist/generator/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  192. package/dist/generator/net8.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  193. package/dist/generator/net8.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
  194. package/dist/generator/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  195. package/dist/generator/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  196. package/dist/generator/net8.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  197. package/dist/generator/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
  198. package/dist/generator/net8.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  199. package/dist/generator/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  200. package/dist/generator/net8.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  201. package/dist/generator/net8.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
  202. package/dist/generator/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  203. package/dist/generator/net8.0/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll +0 -0
  204. package/dist/generator/net8.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  205. package/dist/generator/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  206. package/dist/generator/net8.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  207. package/dist/generator/net8.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
  208. package/dist/generator/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  209. package/dist/generator/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  210. package/dist/generator/net8.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  211. package/dist/generator/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
  212. package/dist/generator/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  213. package/dist/generator/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  214. package/dist/generator/net8.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  215. package/dist/generator/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
  216. package/dist/generator/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  217. package/dist/generator/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  218. package/dist/generator/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  219. package/dist/generator/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
  220. package/dist/generator/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  221. package/dist/generator/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  222. package/dist/generator/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  223. package/dist/generator/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
  224. package/dist/generator/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  225. package/dist/generator/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  226. package/dist/generator/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  227. package/dist/generator/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
  228. package/dist/generator/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  229. package/dist/generator/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll +0 -0
  230. package/dist/generator/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  231. package/dist/generator/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  232. package/dist/generator/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  233. package/dist/generator/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
  234. package/dist/generator/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  235. package/dist/generator/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  236. package/dist/generator/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  237. package/dist/generator/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
  238. package/dist/generator/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +0 -0
  239. package/dist/generator/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  240. package/dist/generator/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll +0 -0
  241. package/dist/generator/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
  242. package/package.json +67 -0
@@ -0,0 +1,198 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT License.
3
+ #nullable enable
4
+
5
+ using System;
6
+ using System.Collections.Generic;
7
+ using System.Text;
8
+ using System.Linq;
9
+
10
+ namespace Azure.Core;
11
+
12
+ internal class HttpMessageSanitizer
13
+ {
14
+ private const string LogAllValue = "*";
15
+ private readonly bool _logAllHeaders;
16
+ private readonly bool _logFullQueries;
17
+ private readonly string[] _allowedQueryParameters;
18
+ private readonly string _redactedPlaceholder;
19
+ private readonly HashSet<string> _allowedHeaders;
20
+
21
+ [ThreadStatic]
22
+ private static StringBuilder? s_cachedStringBuilder;
23
+ private const int MaxCachedStringBuilderCapacity = 1024;
24
+
25
+ internal static HttpMessageSanitizer Default = new HttpMessageSanitizer(Array.Empty<string>(), Array.Empty<string>());
26
+
27
+ public HttpMessageSanitizer(string[] allowedQueryParameters, string[] allowedHeaders, string redactedPlaceholder = "REDACTED")
28
+ {
29
+ _logAllHeaders = allowedHeaders.Contains(LogAllValue);
30
+ _logFullQueries = allowedQueryParameters.Contains(LogAllValue);
31
+
32
+ _allowedQueryParameters = allowedQueryParameters;
33
+ _redactedPlaceholder = redactedPlaceholder;
34
+ _allowedHeaders = new HashSet<string>(allowedHeaders, StringComparer.InvariantCultureIgnoreCase);
35
+ }
36
+
37
+ public string SanitizeHeader(string name, string value)
38
+ {
39
+ if (_logAllHeaders || _allowedHeaders.Contains(name))
40
+ {
41
+ return value;
42
+ }
43
+
44
+ return _redactedPlaceholder;
45
+ }
46
+
47
+ public string SanitizeUrl(string url)
48
+ {
49
+ if (_logFullQueries)
50
+ {
51
+ return url;
52
+ }
53
+
54
+ #if NET5_0_OR_GREATER
55
+ int indexOfQuerySeparator = url.IndexOf('?', StringComparison.Ordinal);
56
+ #else
57
+ int indexOfQuerySeparator = url.IndexOf('?');
58
+ #endif
59
+
60
+ if (indexOfQuerySeparator == -1)
61
+ {
62
+ return url;
63
+ }
64
+
65
+ // PERF: Avoid allocations in this heavily-used method:
66
+ // 1. Use ReadOnlySpan<char> to avoid creating substrings.
67
+ // 2. Defer creating a StringBuilder until absolutely necessary.
68
+ // 3. Use a rented StringBuilder to avoid allocating a new one
69
+ // each time.
70
+
71
+ // Create the StringBuilder only when necessary (when we encounter
72
+ // a query parameter that needs to be redacted)
73
+ StringBuilder? stringBuilder = null;
74
+
75
+ // Keeps track of the number of characters we've processed so far
76
+ // so that, if we need to create a StringBuilder, we know how many
77
+ // characters to copy over from the original URL.
78
+ int lengthSoFar = indexOfQuerySeparator + 1;
79
+
80
+ ReadOnlySpan<char> query = url.AsSpan(indexOfQuerySeparator + 1); // +1 to skip the '?'
81
+
82
+ while (query.Length > 0)
83
+ {
84
+ int endOfParameterValue = query.IndexOf('&');
85
+ int endOfParameterName = query.IndexOf('=');
86
+ bool noValue = false;
87
+
88
+ // Check if we have parameter without value
89
+ if ((endOfParameterValue == -1 && endOfParameterName == -1) ||
90
+ (endOfParameterValue != -1 && (endOfParameterName == -1 || endOfParameterName > endOfParameterValue)))
91
+ {
92
+ endOfParameterName = endOfParameterValue;
93
+ noValue = true;
94
+ }
95
+
96
+ if (endOfParameterName == -1)
97
+ {
98
+ endOfParameterName = query.Length;
99
+ }
100
+
101
+ if (endOfParameterValue == -1)
102
+ {
103
+ endOfParameterValue = query.Length;
104
+ }
105
+ else
106
+ {
107
+ // include the separator
108
+ endOfParameterValue++;
109
+ }
110
+
111
+ ReadOnlySpan<char> parameterName = query.Slice(0, endOfParameterName);
112
+
113
+ bool isAllowed = false;
114
+ foreach (string name in _allowedQueryParameters)
115
+ {
116
+ if (parameterName.Equals(name.AsSpan(), StringComparison.OrdinalIgnoreCase))
117
+ {
118
+ isAllowed = true;
119
+ break;
120
+ }
121
+ }
122
+
123
+ int valueLength = endOfParameterValue;
124
+ int nameLength = endOfParameterName;
125
+
126
+ if (isAllowed || noValue)
127
+ {
128
+ if (stringBuilder is null)
129
+ {
130
+ lengthSoFar += valueLength;
131
+ }
132
+ else
133
+ {
134
+ AppendReadOnlySpan(stringBuilder, query.Slice(0, valueLength));
135
+ }
136
+ }
137
+ else
138
+ {
139
+ // Encountered a query value that needs to be redacted.
140
+ // Create the StringBuilder if we haven't already.
141
+ stringBuilder ??= RentStringBuilder(url.Length).Append(url, 0, lengthSoFar);
142
+
143
+ AppendReadOnlySpan(stringBuilder, query.Slice(0, nameLength))
144
+ .Append('=')
145
+ .Append(_redactedPlaceholder);
146
+
147
+ if (query[endOfParameterValue - 1] == '&')
148
+ {
149
+ stringBuilder.Append('&');
150
+ }
151
+ }
152
+
153
+ query = query.Slice(valueLength);
154
+ }
155
+
156
+ return stringBuilder is null ? url : ToStringAndReturnStringBuilder(stringBuilder);
157
+
158
+ static StringBuilder AppendReadOnlySpan(StringBuilder builder, ReadOnlySpan<char> span)
159
+ {
160
+ #if NET6_0_OR_GREATER
161
+ return builder.Append(span);
162
+ #else
163
+ foreach (char c in span)
164
+ {
165
+ builder.Append(c);
166
+ }
167
+
168
+ return builder;
169
+ #endif
170
+ }
171
+ }
172
+
173
+ private static StringBuilder RentStringBuilder(int capacity)
174
+ {
175
+ if (capacity <= MaxCachedStringBuilderCapacity)
176
+ {
177
+ StringBuilder? builder = s_cachedStringBuilder;
178
+ if (builder is not null && builder.Capacity >= capacity)
179
+ {
180
+ s_cachedStringBuilder = null;
181
+ return builder;
182
+ }
183
+ }
184
+
185
+ return new StringBuilder(capacity);
186
+ }
187
+
188
+ private static string ToStringAndReturnStringBuilder(StringBuilder builder)
189
+ {
190
+ string result = builder.ToString();
191
+ if (builder.Capacity <= MaxCachedStringBuilderCapacity)
192
+ {
193
+ s_cachedStringBuilder = builder.Clear();
194
+ }
195
+
196
+ return result;
197
+ }
198
+ }
@@ -0,0 +1,14 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT License.
3
+
4
+ using System.Threading;
5
+ using System.Threading.Tasks;
6
+
7
+ namespace Azure.Core
8
+ {
9
+ internal interface IOperationSource<T>
10
+ {
11
+ T CreateResult(Response response, CancellationToken cancellationToken);
12
+ ValueTask<T> CreateResultAsync(Response response, CancellationToken cancellationToken);
13
+ }
14
+ }