Example #1
0
        /// <summary>
        ///     Ensure that the response indicates success.
        /// </summary>
        /// <param name="allowInProgress">
        ///     Treat an in-progress response as successful?
        ///
        ///     Default is <c>true</c>.
        /// </param>
        /// <exception cref="CloudControlException">
        ///     The response does not indicate success.
        /// </exception>
        public void EnsureSuccess(bool allowInProgress = true)
        {
            if (IsSuccess(allowInProgress))
            {
                return;
            }

            throw CloudControlException.FromApiV2Response(this);
        }
        /// <summary>
        ///     Create an <see cref="ErrorRecord"/> representing an error from the CloudControl API.
        /// </summary>
        /// <param name="client">
        ///     The CloudControl API client.
        /// </param>
        /// <param name="apiResponse">
        ///     The API response from CloudControl.
        /// </param>
        /// <returns>
        ///     The configured <see cref="ErrorRecord"/>.
        /// </returns>
        public static ErrorRecord CloudControlApi(CloudControlClient client, ApiResponseV2 apiResponse)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            if (apiResponse == null)
            {
                throw new ArgumentNullException(nameof(apiResponse));
            }

            return(new ErrorRecord(
                       exception: CloudControlException.FromApiV2Response(apiResponse, statusCode: 0),
                       errorId: $"CloudControl.API.{apiResponse.ResponseCode}",
                       errorCategory: ErrorCategory.NotSpecified,
                       targetObject: client.BaseAddress?.AbsoluteUri ?? "Unknown"
                       ));
        }