コード例 #1
0
        internal static ApiManagementLongRunningOperation CreateLongRunningOperation(
            string operationName,
            LongRunningOperationResponse longRunningResponse)
        {
            if (string.IsNullOrWhiteSpace(operationName))
            {
                throw new ArgumentNullException("operationName");
            }

            if (longRunningResponse == null)
            {
                throw new ArgumentNullException("longRunningResponse");
            }

            var result = new ApiManagementLongRunningOperation
            {
                OperationName = operationName,
                OperationLink = longRunningResponse.OperationStatusLink,
                RetryAfter = TimeSpan.FromSeconds(longRunningResponse.RetryAfter),
                Status = longRunningResponse.Status,
                Error = longRunningResponse.Error != null
                    ? longRunningResponse.Error.Message
                    : null
            };

            var apiServiceLongRunnigResponse = longRunningResponse as ApiServiceLongRunningOperationResponse;
            if (apiServiceLongRunnigResponse != null && apiServiceLongRunnigResponse.Value != null)
            {
                result.ApiManagement = new PsApiManagement(apiServiceLongRunnigResponse.Value);
            }

            return result;
        }
コード例 #2
0
        internal static ApiManagementLongRunningOperation CreateLongRunningOperation(
            string operationName,
            LongRunningOperationResponse longRunningResponse)
        {
            if (string.IsNullOrWhiteSpace(operationName))
            {
                throw new ArgumentNullException("operationName");
            }

            if (longRunningResponse == null)
            {
                throw new ArgumentNullException("longRunningResponse");
            }

            var result = new ApiManagementLongRunningOperation
            {
                OperationName = operationName,
                OperationLink = longRunningResponse.OperationStatusLink,
                RetryAfter    = TimeSpan.FromSeconds(longRunningResponse.RetryAfter),
                Status        = longRunningResponse.Status,
                Error         = longRunningResponse.Error != null
                    ? longRunningResponse.Error.Message
                    : null
            };

            var apiServiceLongRunnigResponse = longRunningResponse as ApiServiceLongRunningOperationResponse;

            if (apiServiceLongRunnigResponse != null && apiServiceLongRunnigResponse.Value != null)
            {
                result.ApiManagement = new PsApiManagement(apiServiceLongRunnigResponse.Value);
            }

            return(result);
        }
コード例 #3
0
        protected ApiManagementLongRunningOperation WaitForOperationToComplete(ApiManagementLongRunningOperation longRunningOperation)
        {
            WriteProgress(longRunningOperation);

            while (longRunningOperation.Status == OperationStatus.InProgress)
            {
                var retryAfter = longRunningOperation.RetryAfter ?? LongRunningOperationDefaultTimeout;

                WriteVerboseWithTimestamp(Resources.VerboseGetOperationStateTimeoutMessage, retryAfter);
                Thread.Sleep(retryAfter);

                longRunningOperation = Client.GetLongRunningOperationStatus(longRunningOperation);
                WriteProgress(longRunningOperation);
            }

            return longRunningOperation;
        }
コード例 #4
0
        internal ApiManagementLongRunningOperation GetLongRunningOperationStatus(ApiManagementLongRunningOperation longRunningOperation)
        {
            var response =
                Client.ResourceProvider
                    .GetApiServiceLongRunningOperationStatusAsync(longRunningOperation.OperationLink)
                    .ConfigureAwait(false)
                    .GetAwaiter()
                    .GetResult();

            AdjustRetryAfter(response, _client.LongRunningOperationInitialTimeout);
            var result = ApiManagementLongRunningOperation.CreateLongRunningOperation(longRunningOperation.OperationName, response);

            return result;
        }
コード例 #5
0
 protected void WriteProgress(ApiManagementLongRunningOperation operation)
 {
     WriteProgress(new ProgressRecord(0, operation.OperationName, operation.Status.ToString()));
 }