/* * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ import { SubscriptionOperations } from "../operationsInterfaces"; import * as coreClient from "@azure/core-client"; import * as Mappers from "../models/mappers"; import * as Parameters from "../models/parameters"; import { SubscriptionClient } from "../subscriptionClient"; import { PollerLike, PollOperationState, LroEngine } from "@azure/core-lro"; import { LroImpl } from "../lroImpl"; import { SubscriptionCancelOptionalParams, SubscriptionCancelResponse, SubscriptionName, SubscriptionRenameOptionalParams, SubscriptionRenameResponse, SubscriptionEnableOptionalParams, SubscriptionEnableResponse, AcceptOwnershipRequest, SubscriptionAcceptOwnershipOptionalParams, SubscriptionAcceptOwnershipResponse, SubscriptionAcceptOwnershipStatusOptionalParams, SubscriptionAcceptOwnershipStatusResponse } from "../models"; /** Class containing SubscriptionOperations operations. */ export class SubscriptionOperationsImpl implements SubscriptionOperations { private readonly client: SubscriptionClient; /** * Initialize a new instance of the class SubscriptionOperations class. * @param client Reference to the service client */ constructor(client: SubscriptionClient) { this.client = client; } /** * The operation to cancel a subscription * @param subscriptionId Subscription Id. * @param options The options parameters. */ cancel( subscriptionId: string, options?: SubscriptionCancelOptionalParams ): Promise { return this.client.sendOperationRequest( { subscriptionId, options }, cancelOperationSpec ); } /** * The operation to rename a subscription * @param subscriptionId Subscription Id. * @param body Subscription Name * @param options The options parameters. */ rename( subscriptionId: string, body: SubscriptionName, options?: SubscriptionRenameOptionalParams ): Promise { return this.client.sendOperationRequest( { subscriptionId, body, options }, renameOperationSpec ); } /** * The operation to enable a subscription * @param subscriptionId Subscription Id. * @param options The options parameters. */ enable( subscriptionId: string, options?: SubscriptionEnableOptionalParams ): Promise { return this.client.sendOperationRequest( { subscriptionId, options }, enableOperationSpec ); } /** * Accept subscription ownership. * @param subscriptionId Subscription Id. * @param body The parameters required to accept subscription ownership. * @param options The options parameters. */ async beginAcceptOwnership( subscriptionId: string, body: AcceptOwnershipRequest, options?: SubscriptionAcceptOwnershipOptionalParams ): Promise< PollerLike< PollOperationState, SubscriptionAcceptOwnershipResponse > > { const directSendOperation = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ): Promise => { return this.client.sendOperationRequest(args, spec); }; const sendOperation = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { let currentRawResponse: | coreClient.FullOperationResponse | undefined = undefined; const providedCallback = args.options?.onResponse; const callback: coreClient.RawResponseCallback = ( rawResponse: coreClient.FullOperationResponse, flatResponse: unknown ) => { currentRawResponse = rawResponse; providedCallback?.(rawResponse, flatResponse); }; const updatedArgs = { ...args, options: { ...args.options, onResponse: callback } }; const flatResponse = await directSendOperation(updatedArgs, spec); return { flatResponse, rawResponse: { statusCode: currentRawResponse!.status, body: currentRawResponse!.parsedBody, headers: currentRawResponse!.headers.toJSON() } }; }; const lro = new LroImpl( sendOperation, { subscriptionId, body, options }, acceptOwnershipOperationSpec ); const poller = new LroEngine(lro, { resumeFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs }); await poller.poll(); return poller; } /** * Accept subscription ownership. * @param subscriptionId Subscription Id. * @param body The parameters required to accept subscription ownership. * @param options The options parameters. */ async beginAcceptOwnershipAndWait( subscriptionId: string, body: AcceptOwnershipRequest, options?: SubscriptionAcceptOwnershipOptionalParams ): Promise { const poller = await this.beginAcceptOwnership( subscriptionId, body, options ); return poller.pollUntilDone(); } /** * Accept subscription ownership status. * @param subscriptionId Subscription Id. * @param options The options parameters. */ acceptOwnershipStatus( subscriptionId: string, options?: SubscriptionAcceptOwnershipStatusOptionalParams ): Promise { return this.client.sendOperationRequest( { subscriptionId, options }, acceptOwnershipStatusOperationSpec ); } } // Operation Specifications const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); const cancelOperationSpec: coreClient.OperationSpec = { path: "/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/cancel", httpMethod: "POST", responses: { 200: { bodyMapper: Mappers.CanceledSubscriptionId }, default: { bodyMapper: Mappers.ErrorResponseBody } }, queryParameters: [Parameters.apiVersion1], urlParameters: [Parameters.$host, Parameters.subscriptionId], headerParameters: [Parameters.accept], serializer }; const renameOperationSpec: coreClient.OperationSpec = { path: "/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/rename", httpMethod: "POST", responses: { 200: { bodyMapper: Mappers.RenamedSubscriptionId }, default: { bodyMapper: Mappers.ErrorResponseBody } }, requestBody: Parameters.body, queryParameters: [Parameters.apiVersion1], urlParameters: [Parameters.$host, Parameters.subscriptionId], headerParameters: [Parameters.accept, Parameters.contentType], mediaType: "json", serializer }; const enableOperationSpec: coreClient.OperationSpec = { path: "/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/enable", httpMethod: "POST", responses: { 200: { bodyMapper: Mappers.EnabledSubscriptionId }, default: { bodyMapper: Mappers.ErrorResponseBody } }, queryParameters: [Parameters.apiVersion1], urlParameters: [Parameters.$host, Parameters.subscriptionId], headerParameters: [Parameters.accept], serializer }; const acceptOwnershipOperationSpec: coreClient.OperationSpec = { path: "/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnership", httpMethod: "POST", responses: { 200: { headersMapper: Mappers.SubscriptionAcceptOwnershipHeaders }, 201: { headersMapper: Mappers.SubscriptionAcceptOwnershipHeaders }, 202: { headersMapper: Mappers.SubscriptionAcceptOwnershipHeaders }, 204: { headersMapper: Mappers.SubscriptionAcceptOwnershipHeaders }, default: { bodyMapper: Mappers.ErrorResponseBody } }, requestBody: Parameters.body1, queryParameters: [Parameters.apiVersion1], urlParameters: [Parameters.$host, Parameters.subscriptionId], headerParameters: [Parameters.accept, Parameters.contentType], mediaType: "json", serializer }; const acceptOwnershipStatusOperationSpec: coreClient.OperationSpec = { path: "/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnershipStatus", httpMethod: "GET", responses: { 200: { bodyMapper: Mappers.AcceptOwnershipStatusResponse }, default: { bodyMapper: Mappers.ErrorResponseBody } }, queryParameters: [Parameters.apiVersion1], urlParameters: [Parameters.$host, Parameters.subscriptionId], headerParameters: [Parameters.accept], serializer };