// +build go1.13 // 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. // Changes may cause incorrect behavior and will be lost if the code is regenerated. package armmonitor import ( "context" "errors" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/armcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "net/http" "net/url" "strings" ) // LogProfilesClient contains the methods for the LogProfiles group. // Don't use this type directly, use NewLogProfilesClient() instead. type LogProfilesClient struct { con *armcore.Connection subscriptionID string } // NewLogProfilesClient creates a new instance of LogProfilesClient with the specified values. func NewLogProfilesClient(con *armcore.Connection, subscriptionID string) *LogProfilesClient { return &LogProfilesClient{con: con, subscriptionID: subscriptionID} } // CreateOrUpdate - Create or update a log profile in Azure Monitoring REST API. // If the operation fails it returns a generic error. func (client *LogProfilesClient) CreateOrUpdate(ctx context.Context, logProfileName string, parameters LogProfileResource, options *LogProfilesCreateOrUpdateOptions) (LogProfileResourceResponse, error) { req, err := client.createOrUpdateCreateRequest(ctx, logProfileName, parameters, options) if err != nil { return LogProfileResourceResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return LogProfileResourceResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return LogProfileResourceResponse{}, client.createOrUpdateHandleError(resp) } return client.createOrUpdateHandleResponse(resp) } // createOrUpdateCreateRequest creates the CreateOrUpdate request. func (client *LogProfilesClient) createOrUpdateCreateRequest(ctx context.Context, logProfileName string, parameters LogProfileResource, options *LogProfilesCreateOrUpdateOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" if logProfileName == "" { return nil, errors.New("parameter logProfileName cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) if client.subscriptionID == "" { return nil, errors.New("parameter client.subscriptionID cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) reqQP := req.URL.Query() reqQP.Set("api-version", "2016-03-01") req.URL.RawQuery = reqQP.Encode() req.Header.Set("Accept", "application/json") return req, req.MarshalAsJSON(parameters) } // createOrUpdateHandleResponse handles the CreateOrUpdate response. func (client *LogProfilesClient) createOrUpdateHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { var val *LogProfileResource if err := resp.UnmarshalAsJSON(&val); err != nil { return LogProfileResourceResponse{}, err } return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil } // createOrUpdateHandleError handles the CreateOrUpdate error response. func (client *LogProfilesClient) createOrUpdateHandleError(resp *azcore.Response) error { body, err := resp.Payload() if err != nil { return azcore.NewResponseError(err, resp.Response) } if len(body) == 0 { return azcore.NewResponseError(errors.New(resp.Status), resp.Response) } return azcore.NewResponseError(errors.New(string(body)), resp.Response) } // Delete - Deletes the log profile. // If the operation fails it returns a generic error. func (client *LogProfilesClient) Delete(ctx context.Context, logProfileName string, options *LogProfilesDeleteOptions) (*http.Response, error) { req, err := client.deleteCreateRequest(ctx, logProfileName, options) if err != nil { return nil, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return nil, err } if !resp.HasStatusCode(http.StatusOK) { return nil, client.deleteHandleError(resp) } return resp.Response, nil } // deleteCreateRequest creates the Delete request. func (client *LogProfilesClient) deleteCreateRequest(ctx context.Context, logProfileName string, options *LogProfilesDeleteOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" if logProfileName == "" { return nil, errors.New("parameter logProfileName cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) if client.subscriptionID == "" { return nil, errors.New("parameter client.subscriptionID cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) reqQP := req.URL.Query() reqQP.Set("api-version", "2016-03-01") req.URL.RawQuery = reqQP.Encode() return req, nil } // deleteHandleError handles the Delete error response. func (client *LogProfilesClient) deleteHandleError(resp *azcore.Response) error { body, err := resp.Payload() if err != nil { return azcore.NewResponseError(err, resp.Response) } if len(body) == 0 { return azcore.NewResponseError(errors.New(resp.Status), resp.Response) } return azcore.NewResponseError(errors.New(string(body)), resp.Response) } // Get - Gets the log profile. // If the operation fails it returns the *ErrorResponse error type. func (client *LogProfilesClient) Get(ctx context.Context, logProfileName string, options *LogProfilesGetOptions) (LogProfileResourceResponse, error) { req, err := client.getCreateRequest(ctx, logProfileName, options) if err != nil { return LogProfileResourceResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return LogProfileResourceResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return LogProfileResourceResponse{}, client.getHandleError(resp) } return client.getHandleResponse(resp) } // getCreateRequest creates the Get request. func (client *LogProfilesClient) getCreateRequest(ctx context.Context, logProfileName string, options *LogProfilesGetOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" if logProfileName == "" { return nil, errors.New("parameter logProfileName cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) if client.subscriptionID == "" { return nil, errors.New("parameter client.subscriptionID cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) reqQP := req.URL.Query() reqQP.Set("api-version", "2016-03-01") req.URL.RawQuery = reqQP.Encode() req.Header.Set("Accept", "application/json") return req, nil } // getHandleResponse handles the Get response. func (client *LogProfilesClient) getHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { var val *LogProfileResource if err := resp.UnmarshalAsJSON(&val); err != nil { return LogProfileResourceResponse{}, err } return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil } // getHandleError handles the Get error response. func (client *LogProfilesClient) getHandleError(resp *azcore.Response) error { body, err := resp.Payload() if err != nil { return azcore.NewResponseError(err, resp.Response) } errType := ErrorResponse{raw: string(body)} if err := resp.UnmarshalAsJSON(&errType); err != nil { return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) } return azcore.NewResponseError(&errType, resp.Response) } // List - List the log profiles. // If the operation fails it returns a generic error. func (client *LogProfilesClient) List(ctx context.Context, options *LogProfilesListOptions) (LogProfileCollectionResponse, error) { req, err := client.listCreateRequest(ctx, options) if err != nil { return LogProfileCollectionResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return LogProfileCollectionResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return LogProfileCollectionResponse{}, client.listHandleError(resp) } return client.listHandleResponse(resp) } // listCreateRequest creates the List request. func (client *LogProfilesClient) listCreateRequest(ctx context.Context, options *LogProfilesListOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles" if client.subscriptionID == "" { return nil, errors.New("parameter client.subscriptionID cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) reqQP := req.URL.Query() reqQP.Set("api-version", "2016-03-01") req.URL.RawQuery = reqQP.Encode() req.Header.Set("Accept", "application/json") return req, nil } // listHandleResponse handles the List response. func (client *LogProfilesClient) listHandleResponse(resp *azcore.Response) (LogProfileCollectionResponse, error) { var val *LogProfileCollection if err := resp.UnmarshalAsJSON(&val); err != nil { return LogProfileCollectionResponse{}, err } return LogProfileCollectionResponse{RawResponse: resp.Response, LogProfileCollection: val}, nil } // listHandleError handles the List error response. func (client *LogProfilesClient) listHandleError(resp *azcore.Response) error { body, err := resp.Payload() if err != nil { return azcore.NewResponseError(err, resp.Response) } if len(body) == 0 { return azcore.NewResponseError(errors.New(resp.Status), resp.Response) } return azcore.NewResponseError(errors.New(string(body)), resp.Response) } // Update - Updates an existing LogProfilesResource. To update other fields use the CreateOrUpdate method. // If the operation fails it returns the *ErrorResponse error type. func (client *LogProfilesClient) Update(ctx context.Context, logProfileName string, logProfilesResource LogProfileResourcePatch, options *LogProfilesUpdateOptions) (LogProfileResourceResponse, error) { req, err := client.updateCreateRequest(ctx, logProfileName, logProfilesResource, options) if err != nil { return LogProfileResourceResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return LogProfileResourceResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return LogProfileResourceResponse{}, client.updateHandleError(resp) } return client.updateHandleResponse(resp) } // updateCreateRequest creates the Update request. func (client *LogProfilesClient) updateCreateRequest(ctx context.Context, logProfileName string, logProfilesResource LogProfileResourcePatch, options *LogProfilesUpdateOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" if client.subscriptionID == "" { return nil, errors.New("parameter client.subscriptionID cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) if logProfileName == "" { return nil, errors.New("parameter logProfileName cannot be empty") } urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) reqQP := req.URL.Query() reqQP.Set("api-version", "2016-03-01") req.URL.RawQuery = reqQP.Encode() req.Header.Set("Accept", "application/json") return req, req.MarshalAsJSON(logProfilesResource) } // updateHandleResponse handles the Update response. func (client *LogProfilesClient) updateHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { var val *LogProfileResource if err := resp.UnmarshalAsJSON(&val); err != nil { return LogProfileResourceResponse{}, err } return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil } // updateHandleError handles the Update error response. func (client *LogProfilesClient) updateHandleError(resp *azcore.Response) error { body, err := resp.Payload() if err != nil { return azcore.NewResponseError(err, resp.Response) } errType := ErrorResponse{raw: string(body)} if err := resp.UnmarshalAsJSON(&errType); err != nil { return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) } return azcore.NewResponseError(&errType, resp.Response) }