1// +build go1.13 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armmonitor 9 10import ( 11 "context" 12 "errors" 13 "fmt" 14 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 15 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 16 "net/http" 17 "net/url" 18 "strings" 19) 20 21// LogProfilesClient contains the methods for the LogProfiles group. 22// Don't use this type directly, use NewLogProfilesClient() instead. 23type LogProfilesClient struct { 24 con *armcore.Connection 25 subscriptionID string 26} 27 28// NewLogProfilesClient creates a new instance of LogProfilesClient with the specified values. 29func NewLogProfilesClient(con *armcore.Connection, subscriptionID string) *LogProfilesClient { 30 return &LogProfilesClient{con: con, subscriptionID: subscriptionID} 31} 32 33// CreateOrUpdate - Create or update a log profile in Azure Monitoring REST API. 34// If the operation fails it returns a generic error. 35func (client *LogProfilesClient) CreateOrUpdate(ctx context.Context, logProfileName string, parameters LogProfileResource, options *LogProfilesCreateOrUpdateOptions) (LogProfileResourceResponse, error) { 36 req, err := client.createOrUpdateCreateRequest(ctx, logProfileName, parameters, options) 37 if err != nil { 38 return LogProfileResourceResponse{}, err 39 } 40 resp, err := client.con.Pipeline().Do(req) 41 if err != nil { 42 return LogProfileResourceResponse{}, err 43 } 44 if !resp.HasStatusCode(http.StatusOK) { 45 return LogProfileResourceResponse{}, client.createOrUpdateHandleError(resp) 46 } 47 return client.createOrUpdateHandleResponse(resp) 48} 49 50// createOrUpdateCreateRequest creates the CreateOrUpdate request. 51func (client *LogProfilesClient) createOrUpdateCreateRequest(ctx context.Context, logProfileName string, parameters LogProfileResource, options *LogProfilesCreateOrUpdateOptions) (*azcore.Request, error) { 52 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" 53 if logProfileName == "" { 54 return nil, errors.New("parameter logProfileName cannot be empty") 55 } 56 urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) 57 if client.subscriptionID == "" { 58 return nil, errors.New("parameter client.subscriptionID cannot be empty") 59 } 60 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 61 req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 62 if err != nil { 63 return nil, err 64 } 65 req.Telemetry(telemetryInfo) 66 reqQP := req.URL.Query() 67 reqQP.Set("api-version", "2016-03-01") 68 req.URL.RawQuery = reqQP.Encode() 69 req.Header.Set("Accept", "application/json") 70 return req, req.MarshalAsJSON(parameters) 71} 72 73// createOrUpdateHandleResponse handles the CreateOrUpdate response. 74func (client *LogProfilesClient) createOrUpdateHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { 75 var val *LogProfileResource 76 if err := resp.UnmarshalAsJSON(&val); err != nil { 77 return LogProfileResourceResponse{}, err 78 } 79 return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil 80} 81 82// createOrUpdateHandleError handles the CreateOrUpdate error response. 83func (client *LogProfilesClient) createOrUpdateHandleError(resp *azcore.Response) error { 84 body, err := resp.Payload() 85 if err != nil { 86 return azcore.NewResponseError(err, resp.Response) 87 } 88 if len(body) == 0 { 89 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 90 } 91 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 92} 93 94// Delete - Deletes the log profile. 95// If the operation fails it returns a generic error. 96func (client *LogProfilesClient) Delete(ctx context.Context, logProfileName string, options *LogProfilesDeleteOptions) (*http.Response, error) { 97 req, err := client.deleteCreateRequest(ctx, logProfileName, options) 98 if err != nil { 99 return nil, err 100 } 101 resp, err := client.con.Pipeline().Do(req) 102 if err != nil { 103 return nil, err 104 } 105 if !resp.HasStatusCode(http.StatusOK) { 106 return nil, client.deleteHandleError(resp) 107 } 108 return resp.Response, nil 109} 110 111// deleteCreateRequest creates the Delete request. 112func (client *LogProfilesClient) deleteCreateRequest(ctx context.Context, logProfileName string, options *LogProfilesDeleteOptions) (*azcore.Request, error) { 113 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" 114 if logProfileName == "" { 115 return nil, errors.New("parameter logProfileName cannot be empty") 116 } 117 urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) 118 if client.subscriptionID == "" { 119 return nil, errors.New("parameter client.subscriptionID cannot be empty") 120 } 121 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 122 req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 123 if err != nil { 124 return nil, err 125 } 126 req.Telemetry(telemetryInfo) 127 reqQP := req.URL.Query() 128 reqQP.Set("api-version", "2016-03-01") 129 req.URL.RawQuery = reqQP.Encode() 130 return req, nil 131} 132 133// deleteHandleError handles the Delete error response. 134func (client *LogProfilesClient) deleteHandleError(resp *azcore.Response) error { 135 body, err := resp.Payload() 136 if err != nil { 137 return azcore.NewResponseError(err, resp.Response) 138 } 139 if len(body) == 0 { 140 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 141 } 142 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 143} 144 145// Get - Gets the log profile. 146// If the operation fails it returns the *ErrorResponse error type. 147func (client *LogProfilesClient) Get(ctx context.Context, logProfileName string, options *LogProfilesGetOptions) (LogProfileResourceResponse, error) { 148 req, err := client.getCreateRequest(ctx, logProfileName, options) 149 if err != nil { 150 return LogProfileResourceResponse{}, err 151 } 152 resp, err := client.con.Pipeline().Do(req) 153 if err != nil { 154 return LogProfileResourceResponse{}, err 155 } 156 if !resp.HasStatusCode(http.StatusOK) { 157 return LogProfileResourceResponse{}, client.getHandleError(resp) 158 } 159 return client.getHandleResponse(resp) 160} 161 162// getCreateRequest creates the Get request. 163func (client *LogProfilesClient) getCreateRequest(ctx context.Context, logProfileName string, options *LogProfilesGetOptions) (*azcore.Request, error) { 164 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" 165 if logProfileName == "" { 166 return nil, errors.New("parameter logProfileName cannot be empty") 167 } 168 urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) 169 if client.subscriptionID == "" { 170 return nil, errors.New("parameter client.subscriptionID cannot be empty") 171 } 172 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 173 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 174 if err != nil { 175 return nil, err 176 } 177 req.Telemetry(telemetryInfo) 178 reqQP := req.URL.Query() 179 reqQP.Set("api-version", "2016-03-01") 180 req.URL.RawQuery = reqQP.Encode() 181 req.Header.Set("Accept", "application/json") 182 return req, nil 183} 184 185// getHandleResponse handles the Get response. 186func (client *LogProfilesClient) getHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { 187 var val *LogProfileResource 188 if err := resp.UnmarshalAsJSON(&val); err != nil { 189 return LogProfileResourceResponse{}, err 190 } 191 return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil 192} 193 194// getHandleError handles the Get error response. 195func (client *LogProfilesClient) getHandleError(resp *azcore.Response) error { 196 body, err := resp.Payload() 197 if err != nil { 198 return azcore.NewResponseError(err, resp.Response) 199 } 200 errType := ErrorResponse{raw: string(body)} 201 if err := resp.UnmarshalAsJSON(&errType); err != nil { 202 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 203 } 204 return azcore.NewResponseError(&errType, resp.Response) 205} 206 207// List - List the log profiles. 208// If the operation fails it returns a generic error. 209func (client *LogProfilesClient) List(ctx context.Context, options *LogProfilesListOptions) (LogProfileCollectionResponse, error) { 210 req, err := client.listCreateRequest(ctx, options) 211 if err != nil { 212 return LogProfileCollectionResponse{}, err 213 } 214 resp, err := client.con.Pipeline().Do(req) 215 if err != nil { 216 return LogProfileCollectionResponse{}, err 217 } 218 if !resp.HasStatusCode(http.StatusOK) { 219 return LogProfileCollectionResponse{}, client.listHandleError(resp) 220 } 221 return client.listHandleResponse(resp) 222} 223 224// listCreateRequest creates the List request. 225func (client *LogProfilesClient) listCreateRequest(ctx context.Context, options *LogProfilesListOptions) (*azcore.Request, error) { 226 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles" 227 if client.subscriptionID == "" { 228 return nil, errors.New("parameter client.subscriptionID cannot be empty") 229 } 230 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 231 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 232 if err != nil { 233 return nil, err 234 } 235 req.Telemetry(telemetryInfo) 236 reqQP := req.URL.Query() 237 reqQP.Set("api-version", "2016-03-01") 238 req.URL.RawQuery = reqQP.Encode() 239 req.Header.Set("Accept", "application/json") 240 return req, nil 241} 242 243// listHandleResponse handles the List response. 244func (client *LogProfilesClient) listHandleResponse(resp *azcore.Response) (LogProfileCollectionResponse, error) { 245 var val *LogProfileCollection 246 if err := resp.UnmarshalAsJSON(&val); err != nil { 247 return LogProfileCollectionResponse{}, err 248 } 249 return LogProfileCollectionResponse{RawResponse: resp.Response, LogProfileCollection: val}, nil 250} 251 252// listHandleError handles the List error response. 253func (client *LogProfilesClient) listHandleError(resp *azcore.Response) error { 254 body, err := resp.Payload() 255 if err != nil { 256 return azcore.NewResponseError(err, resp.Response) 257 } 258 if len(body) == 0 { 259 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 260 } 261 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 262} 263 264// Update - Updates an existing LogProfilesResource. To update other fields use the CreateOrUpdate method. 265// If the operation fails it returns the *ErrorResponse error type. 266func (client *LogProfilesClient) Update(ctx context.Context, logProfileName string, logProfilesResource LogProfileResourcePatch, options *LogProfilesUpdateOptions) (LogProfileResourceResponse, error) { 267 req, err := client.updateCreateRequest(ctx, logProfileName, logProfilesResource, options) 268 if err != nil { 269 return LogProfileResourceResponse{}, err 270 } 271 resp, err := client.con.Pipeline().Do(req) 272 if err != nil { 273 return LogProfileResourceResponse{}, err 274 } 275 if !resp.HasStatusCode(http.StatusOK) { 276 return LogProfileResourceResponse{}, client.updateHandleError(resp) 277 } 278 return client.updateHandleResponse(resp) 279} 280 281// updateCreateRequest creates the Update request. 282func (client *LogProfilesClient) updateCreateRequest(ctx context.Context, logProfileName string, logProfilesResource LogProfileResourcePatch, options *LogProfilesUpdateOptions) (*azcore.Request, error) { 283 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Insights/logprofiles/{logProfileName}" 284 if client.subscriptionID == "" { 285 return nil, errors.New("parameter client.subscriptionID cannot be empty") 286 } 287 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 288 if logProfileName == "" { 289 return nil, errors.New("parameter logProfileName cannot be empty") 290 } 291 urlPath = strings.ReplaceAll(urlPath, "{logProfileName}", url.PathEscape(logProfileName)) 292 req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 293 if err != nil { 294 return nil, err 295 } 296 req.Telemetry(telemetryInfo) 297 reqQP := req.URL.Query() 298 reqQP.Set("api-version", "2016-03-01") 299 req.URL.RawQuery = reqQP.Encode() 300 req.Header.Set("Accept", "application/json") 301 return req, req.MarshalAsJSON(logProfilesResource) 302} 303 304// updateHandleResponse handles the Update response. 305func (client *LogProfilesClient) updateHandleResponse(resp *azcore.Response) (LogProfileResourceResponse, error) { 306 var val *LogProfileResource 307 if err := resp.UnmarshalAsJSON(&val); err != nil { 308 return LogProfileResourceResponse{}, err 309 } 310 return LogProfileResourceResponse{RawResponse: resp.Response, LogProfileResource: val}, nil 311} 312 313// updateHandleError handles the Update error response. 314func (client *LogProfilesClient) updateHandleError(resp *azcore.Response) error { 315 body, err := resp.Payload() 316 if err != nil { 317 return azcore.NewResponseError(err, resp.Response) 318 } 319 errType := ErrorResponse{raw: string(body)} 320 if err := resp.UnmarshalAsJSON(&errType); err != nil { 321 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 322 } 323 return azcore.NewResponseError(&errType, resp.Response) 324} 325