-
Notifications
You must be signed in to change notification settings - Fork 4.5k
/
LogsIngestionClient.cs
123 lines (111 loc) · 7.14 KB
/
LogsIngestionClient.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// <auto-generated/>
#nullable disable
using System;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Core.Pipeline;
namespace Azure.Monitor.Ingestion
{
// Data plane generated client.
/// <summary> The LogsIngestion service client. </summary>
public partial class LogsIngestionClient
{
private static readonly string[] AuthorizationScopes = new string[] { "https://monitor.azure.com//.default" };
private readonly TokenCredential _tokenCredential;
private readonly HttpPipeline _pipeline;
private readonly Uri _endpoint;
private readonly string _apiVersion;
/// <summary> The ClientDiagnostics is used to provide tracing support for the client library. </summary>
internal ClientDiagnostics ClientDiagnostics { get; }
/// <summary> The HTTP pipeline for sending and receiving REST requests and responses. </summary>
public virtual HttpPipeline Pipeline => _pipeline;
/// <summary> Initializes a new instance of LogsIngestionClient. </summary>
/// <param name="endpoint"> The Data Collection Endpoint for the Data Collection Rule, for example https://dce-name.eastus-2.ingest.monitor.azure.com. </param>
/// <param name="credential"> A credential used to authenticate to an Azure Service. </param>
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> or <paramref name="credential"/> is null. </exception>
public LogsIngestionClient(Uri endpoint, TokenCredential credential) : this(endpoint, credential, new LogsIngestionClientOptions())
{
}
/// <summary>
/// [Protocol Method] Ingestion API used to directly ingest data using Data Collection Rules
/// <list type="bullet">
/// <item>
/// <description>
/// This <see href="https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/core/Azure.Core/samples/ProtocolMethods.md">protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios.
/// </description>
/// </item>
/// </list>
/// </summary>
/// <param name="ruleId"> The immutable Id of the Data Collection Rule resource. </param>
/// <param name="streamName"> The streamDeclaration name as defined in the Data Collection Rule. </param>
/// <param name="content"> The content to send as the body of the request. </param>
/// <param name="contentEncoding"> If content is already gzipped, put "gzip". Default behavior is to gzip all input. </param>
/// <param name="context"> The request context, which can override default behaviors of the client pipeline on a per-call basis. </param>
/// <exception cref="ArgumentNullException"> <paramref name="ruleId"/>, <paramref name="streamName"/> or <paramref name="content"/> is null. </exception>
/// <exception cref="ArgumentException"> <paramref name="ruleId"/> or <paramref name="streamName"/> is an empty string, and was expected to be non-empty. </exception>
/// <exception cref="RequestFailedException"> Service returned a non-success status code. </exception>
/// <returns> The response returned from the service. </returns>
/// <include file="Docs/LogsIngestionClient.xml" path="doc/members/member[@name='UploadAsync(string,string,RequestContent,string,RequestContext)']/*" />
public virtual async Task<Response> UploadAsync(string ruleId, string streamName, RequestContent content, string contentEncoding = null, RequestContext context = null)
{
Argument.AssertNotNullOrEmpty(ruleId, nameof(ruleId));
Argument.AssertNotNullOrEmpty(streamName, nameof(streamName));
Argument.AssertNotNull(content, nameof(content));
using var scope = ClientDiagnostics.CreateScope("LogsIngestionClient.Upload");
scope.Start();
try
{
using HttpMessage message = CreateUploadRequest(ruleId, streamName, content, contentEncoding, context);
return await _pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
/// <summary>
/// [Protocol Method] Ingestion API used to directly ingest data using Data Collection Rules
/// <list type="bullet">
/// <item>
/// <description>
/// This <see href="https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/core/Azure.Core/samples/ProtocolMethods.md">protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios.
/// </description>
/// </item>
/// </list>
/// </summary>
/// <param name="ruleId"> The immutable Id of the Data Collection Rule resource. </param>
/// <param name="streamName"> The streamDeclaration name as defined in the Data Collection Rule. </param>
/// <param name="content"> The content to send as the body of the request. </param>
/// <param name="contentEncoding"> If content is already gzipped, put "gzip". Default behavior is to gzip all input. </param>
/// <param name="context"> The request context, which can override default behaviors of the client pipeline on a per-call basis. </param>
/// <exception cref="ArgumentNullException"> <paramref name="ruleId"/>, <paramref name="streamName"/> or <paramref name="content"/> is null. </exception>
/// <exception cref="ArgumentException"> <paramref name="ruleId"/> or <paramref name="streamName"/> is an empty string, and was expected to be non-empty. </exception>
/// <exception cref="RequestFailedException"> Service returned a non-success status code. </exception>
/// <returns> The response returned from the service. </returns>
/// <include file="Docs/LogsIngestionClient.xml" path="doc/members/member[@name='Upload(string,string,RequestContent,string,RequestContext)']/*" />
public virtual Response Upload(string ruleId, string streamName, RequestContent content, string contentEncoding = null, RequestContext context = null)
{
Argument.AssertNotNullOrEmpty(ruleId, nameof(ruleId));
Argument.AssertNotNullOrEmpty(streamName, nameof(streamName));
Argument.AssertNotNull(content, nameof(content));
using var scope = ClientDiagnostics.CreateScope("LogsIngestionClient.Upload");
scope.Start();
try
{
using HttpMessage message = CreateUploadRequest(ruleId, streamName, content, contentEncoding, context);
return _pipeline.ProcessMessage(message, context);
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
private static ResponseClassifier _responseClassifier204;
private static ResponseClassifier ResponseClassifier204 => _responseClassifier204 ??= new StatusCodeClassifier(stackalloc ushort[] { 204 });
}
}