sdk/monitor/azquery/logs_client.go (140 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
package azquery
import (
"context"
"errors"
"net/http"
"net/url"
"strings"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
)
// LogsClient contains the methods for the Logs group.
// Don't use this type directly, use a constructor function instead.
type LogsClient struct {
host string
internal *azcore.Client
}
// QueryBatch - Executes a batch of Analytics queries for data. Here [https://learn.microsoft.com/azure/azure-monitor/logs/api/batch-queries]
// is an example for using POST with an Analytics query.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2022-10-27
// - body - The batch request body
// - options - LogsClientQueryBatchOptions contains the optional parameters for the LogsClient.QueryBatch method.
func (client *LogsClient) QueryBatch(ctx context.Context, body BatchRequest, options *LogsClientQueryBatchOptions) (LogsClientQueryBatchResponse, error) {
var err error
ctx, endSpan := runtime.StartSpan(ctx, "LogsClient.QueryBatch", client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.queryBatchCreateRequest(ctx, body, options)
if err != nil {
return LogsClientQueryBatchResponse{}, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return LogsClientQueryBatchResponse{}, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK) {
err = runtime.NewResponseError(httpResp)
return LogsClientQueryBatchResponse{}, err
}
resp, err := client.queryBatchHandleResponse(httpResp)
return resp, err
}
// queryBatchCreateRequest creates the QueryBatch request.
func (client *LogsClient) queryBatchCreateRequest(ctx context.Context, body BatchRequest, _ *LogsClientQueryBatchOptions) (*policy.Request, error) {
urlPath := "/$batch"
req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.host, urlPath))
if err != nil {
return nil, err
}
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, body); err != nil {
return nil, err
}
return req, nil
}
// queryBatchHandleResponse handles the QueryBatch response.
func (client *LogsClient) queryBatchHandleResponse(resp *http.Response) (LogsClientQueryBatchResponse, error) {
result := LogsClientQueryBatchResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.BatchResponse); err != nil {
return LogsClientQueryBatchResponse{}, err
}
return result, nil
}
// QueryResource - Executes an Analytics query for data in the context of a resource. Here [https://learn.microsoft.com/azure/azure-monitor/logs/api/azure-resource-queries]
// is an example for using POST with an Analytics
// query.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2022-10-27
// - resourceID - The identifier of the resource.
// - body - The Analytics query. Learn more about the Analytics query syntax [https://azure.microsoft.com/documentation/articles/app-insights-analytics-reference/]
// - options - LogsClientQueryResourceOptions contains the optional parameters for the LogsClient.QueryResource method.
func (client *LogsClient) QueryResource(ctx context.Context, resourceID string, body Body, options *LogsClientQueryResourceOptions) (LogsClientQueryResourceResponse, error) {
var err error
ctx, endSpan := runtime.StartSpan(ctx, "LogsClient.QueryResource", client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.queryResourceCreateRequest(ctx, resourceID, body, options)
if err != nil {
return LogsClientQueryResourceResponse{}, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return LogsClientQueryResourceResponse{}, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK) {
err = runtime.NewResponseError(httpResp)
return LogsClientQueryResourceResponse{}, err
}
resp, err := client.queryResourceHandleResponse(httpResp)
return resp, err
}
// queryResourceCreateRequest creates the QueryResource request.
func (client *LogsClient) queryResourceCreateRequest(ctx context.Context, resourceID string, body Body, options *LogsClientQueryResourceOptions) (*policy.Request, error) {
urlPath := "/{resourceId}/query"
urlPath = strings.ReplaceAll(urlPath, "{resourceId}", resourceID)
req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.host, urlPath))
if err != nil {
return nil, err
}
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Options != nil {
req.Raw().Header["Prefer"] = []string{options.Options.preferHeader()}
}
if err := runtime.MarshalAsJSON(req, body); err != nil {
return nil, err
}
return req, nil
}
// queryResourceHandleResponse handles the QueryResource response.
func (client *LogsClient) queryResourceHandleResponse(resp *http.Response) (LogsClientQueryResourceResponse, error) {
result := LogsClientQueryResourceResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.Results); err != nil {
return LogsClientQueryResourceResponse{}, err
}
return result, nil
}
// QueryWorkspace - Executes an Analytics query for data. Here [https://learn.microsoft.com/azure/azure-monitor/logs/api/request-format]
// is an example for using POST with an Analytics query.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2022-10-27
// - workspaceID - Primary Workspace ID of the query. This is the Workspace ID from the Properties blade in the Azure portal.
// - body - The Analytics query. Learn more about the Analytics query syntax [https://azure.microsoft.com/documentation/articles/app-insights-analytics-reference/]
// - options - LogsClientQueryWorkspaceOptions contains the optional parameters for the LogsClient.QueryWorkspace method.
func (client *LogsClient) QueryWorkspace(ctx context.Context, workspaceID string, body Body, options *LogsClientQueryWorkspaceOptions) (LogsClientQueryWorkspaceResponse, error) {
var err error
ctx, endSpan := runtime.StartSpan(ctx, "LogsClient.QueryWorkspace", client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.queryWorkspaceCreateRequest(ctx, workspaceID, body, options)
if err != nil {
return LogsClientQueryWorkspaceResponse{}, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return LogsClientQueryWorkspaceResponse{}, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK) {
err = runtime.NewResponseError(httpResp)
return LogsClientQueryWorkspaceResponse{}, err
}
resp, err := client.queryWorkspaceHandleResponse(httpResp)
return resp, err
}
// queryWorkspaceCreateRequest creates the QueryWorkspace request.
func (client *LogsClient) queryWorkspaceCreateRequest(ctx context.Context, workspaceID string, body Body, options *LogsClientQueryWorkspaceOptions) (*policy.Request, error) {
urlPath := "/workspaces/{workspaceId}/query"
if workspaceID == "" {
return nil, errors.New("parameter workspaceID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{workspaceId}", url.PathEscape(workspaceID))
req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.host, urlPath))
if err != nil {
return nil, err
}
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Options != nil {
req.Raw().Header["Prefer"] = []string{options.Options.preferHeader()}
}
if err := runtime.MarshalAsJSON(req, body); err != nil {
return nil, err
}
return req, nil
}
// queryWorkspaceHandleResponse handles the QueryWorkspace response.
func (client *LogsClient) queryWorkspaceHandleResponse(resp *http.Response) (LogsClientQueryWorkspaceResponse, error) {
result := LogsClientQueryWorkspaceResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.Results); err != nil {
return LogsClientQueryWorkspaceResponse{}, err
}
return result, nil
}