| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | using System; |
| | using System.Net; |
| |
|
| | using Google.Apis.Requests; |
| | using Google.Apis.Util; |
| |
|
| | namespace Google |
| | { |
| | |
| | public class GoogleApiException : Exception |
| | { |
| | private readonly bool _hasMessage; |
| |
|
| | |
| | public string ServiceName { get; } |
| |
|
| | |
| | public GoogleApiException(string serviceName, string message, Exception inner) |
| | : base(message, inner) |
| | { |
| | ServiceName = serviceName.ThrowIfNull(nameof(serviceName)); |
| | _hasMessage = message is object; |
| | } |
| |
|
| | |
| | public GoogleApiException(string serviceName, string message) : this(serviceName, message, null) |
| | { } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public GoogleApiException(string serviceName) : this(serviceName, null, null) |
| | { } |
| |
|
| | |
| | public RequestError Error { get; set; } |
| |
|
| | private string ErrorMessage => |
| | Error?.Message ?? "No error message was specified."; |
| |
|
| | private string ContentMessage => |
| | Error is null |
| | ? "No error details were specified." |
| | : (Error.IsOnlyRawContent |
| | ? $"No JSON error details were specified.{Environment.NewLine}" + |
| | (string.IsNullOrWhiteSpace(Error.ErrorResponseContent) |
| | ? "Raw error details are empty or white spaces only." |
| | : $"Raw error details are: {Error.ErrorResponseContent}") |
| | : $"{Error}"); |
| |
|
| | |
| | public HttpStatusCode HttpStatusCode { get; set; } |
| |
|
| | private string HttpStatusCodeMessage => |
| | HttpStatusCode > 0 |
| | ? $"HttpStatusCode is {HttpStatusCode}." |
| | : "No HttpStatusCode was specified."; |
| |
|
| | private string ServiceNameMessage => $"The service {ServiceName} has thrown an exception."; |
| |
|
| | private string CombinedMessage => $"{ServiceNameMessage} {HttpStatusCodeMessage} {ErrorMessage}"; |
| |
|
| | |
| | public override string Message => |
| | |
| | _hasMessage ? base.Message : CombinedMessage; |
| |
|
| | |
| | |
| | |
| | |
| | public override string ToString() => |
| | |
| | |
| | $"{ServiceNameMessage}{Environment.NewLine}" + |
| | $"{HttpStatusCodeMessage}{Environment.NewLine}" + |
| | $"{ContentMessage}{Environment.NewLine}" + |
| | $"{base.ToString()}"; |
| | } |
| | } |