Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions src/libs/Inworld/Generated/Inworld.Exceptions.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@ public partial class ApiException : global::System.Exception
/// The HTTP status code of the response.
/// </summary>
public global::System.Net.HttpStatusCode StatusCode { get; }

/// <summary>
/// The response body as a string, or <c>null</c> if the body could not be read.
/// This is always populated for error responses regardless of the <c>ReadResponseAsString</c> setting.
/// For success-path failures (e.g. deserialization errors), the client attempts a best-effort read.
/// </summary>
public string? ResponseBody { get; set; }

/// <summary>
/// The response headers.
/// </summary>
public global::System.Collections.Generic.Dictionary<string, global::System.Collections.Generic.IEnumerable<string>>? ResponseHeaders { get; set; }

/// <summary>
/// Initializes a new instance of the <see cref="ApiException"/> class.
/// </summary>
Expand Down Expand Up @@ -49,6 +52,103 @@ public ApiException(string message, global::System.Exception? innerException, gl
{
StatusCode = statusCode;
}

/// <summary>
/// Constructs an <see cref="ApiException"/> instance whose runtime type matches the response status code when the typed exception hierarchy is enabled. Always returns a plain <see cref="ApiException"/> when the hierarchy is disabled.
/// </summary>
/// <param name="statusCode">The HTTP status code of the response.</param>
/// <param name="message">The error message.</param>
/// <param name="innerException">An inner exception, when one is available.</param>
/// <param name="responseHeaders">The response headers; consulted for 429 <c>Retry-After</c> parsing when present.</param>
public static global::Inworld.ApiException Create(
global::System.Net.HttpStatusCode statusCode,
string message,
global::System.Exception? innerException = null,
global::System.Collections.Generic.IDictionary<string, global::System.Collections.Generic.IEnumerable<string>>? responseHeaders = null)
{
return new global::Inworld.ApiException(message, innerException, statusCode);
}

/// <summary>
/// Convenience overload that constructs an <see cref="ApiException"/> with response body and headers populated.
/// </summary>
public static global::Inworld.ApiException Create(
global::System.Net.HttpStatusCode statusCode,
string message,
global::System.Exception? innerException,
string? responseBody,
global::System.Collections.Generic.Dictionary<string, global::System.Collections.Generic.IEnumerable<string>>? responseHeaders)
{
var exception = global::Inworld.ApiException.Create(statusCode, message, innerException, responseHeaders);
exception.ResponseBody = responseBody;
exception.ResponseHeaders = responseHeaders;
return exception;
}

/// <summary>
/// Parses a <c>Retry-After</c> response header (delta-seconds or HTTP-date) into a <see cref="global::System.TimeSpan"/>.
/// Returns <c>null</c> when the header is missing or unparseable. Public so consumer code that observes
/// <see cref="ApiException"/> directly can recover the value without re-implementing the parser.
/// </summary>
public static global::System.TimeSpan? TryParseRetryAfter(
global::System.Collections.Generic.IDictionary<string, global::System.Collections.Generic.IEnumerable<string>>? headers)
{
if (headers == null)
{
return null;
}

global::System.Collections.Generic.IEnumerable<string>? values = null;
foreach (var entry in headers)
{
if (string.Equals(entry.Key, "Retry-After", global::System.StringComparison.OrdinalIgnoreCase))
{
values = entry.Value;
break;
}
}

if (values == null)
{
return null;
}

string? raw = null;
foreach (var value in values)
{
if (!string.IsNullOrWhiteSpace(value))
{
raw = value.Trim();
break;
}
}

if (string.IsNullOrEmpty(raw))
{
return null;
}

if (int.TryParse(
raw,
global::System.Globalization.NumberStyles.Integer,
global::System.Globalization.CultureInfo.InvariantCulture,
out var seconds) && seconds >= 0)
{
return global::System.TimeSpan.FromSeconds(seconds);
}

if (global::System.DateTimeOffset.TryParse(
raw,
global::System.Globalization.CultureInfo.InvariantCulture,
global::System.Globalization.DateTimeStyles.AssumeUniversal | global::System.Globalization.DateTimeStyles.AdjustToUniversal,
out var when))
{
var delta = when - global::System.DateTimeOffset.UtcNow;
return delta > global::System.TimeSpan.Zero ? delta : global::System.TimeSpan.Zero;
}

return null;
}
}

/// <summary>
Expand Down Expand Up @@ -88,5 +188,39 @@ public ApiException(string message, global::System.Net.HttpStatusCode statusCode
public ApiException(string message, global::System.Exception? innerException, global::System.Net.HttpStatusCode statusCode) : base(message, innerException, statusCode)
{
}

/// <summary>
/// Constructs an <see cref="ApiException{T}"/> whose runtime type matches the response status code when the typed exception hierarchy is enabled.
/// </summary>
/// <param name="statusCode">The HTTP status code of the response.</param>
/// <param name="message">The error message.</param>
/// <param name="innerException">An inner exception, when one is available.</param>
/// <param name="responseHeaders">The response headers; consulted for 429 <c>Retry-After</c> parsing when present.</param>
public static new global::Inworld.ApiException<T> Create(
global::System.Net.HttpStatusCode statusCode,
string message,
global::System.Exception? innerException = null,
global::System.Collections.Generic.IDictionary<string, global::System.Collections.Generic.IEnumerable<string>>? responseHeaders = null)
{
return new global::Inworld.ApiException<T>(message, innerException, statusCode);
}

/// <summary>
/// Convenience overload that constructs an <see cref="ApiException{T}"/> with response body, object, and headers populated.
/// </summary>
public static global::Inworld.ApiException<T> Create(
global::System.Net.HttpStatusCode statusCode,
string message,
global::System.Exception? innerException,
string? responseBody,
T? responseObject,
global::System.Collections.Generic.Dictionary<string, global::System.Collections.Generic.IEnumerable<string>>? responseHeaders)
{
var exception = global::Inworld.ApiException<T>.Create(statusCode, message, innerException, responseHeaders);
exception.ResponseBody = responseBody;
exception.ResponseObject = responseObject;
exception.ResponseHeaders = responseHeaders;
return exception;
}
}
}
39 changes: 17 additions & 22 deletions src/libs/Inworld/Generated/Inworld.ModelsClient.ListModels.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -344,18 +344,17 @@ partial void ProcessListModelsResponseContent(
__exception_default = __ex;
}

throw new global::Inworld.ApiException<global::Inworld.RpcStatus>(

throw global::Inworld.ApiException<global::Inworld.RpcStatus>.Create(
statusCode: __response.StatusCode,
message: __content_default ?? __response.ReasonPhrase ?? string.Empty,
innerException: __exception_default,
statusCode: __response.StatusCode)
{
ResponseBody = __content_default,
ResponseObject = __value_default,
ResponseHeaders = global::System.Linq.Enumerable.ToDictionary(
responseBody: __content_default,
responseObject: __value_default,
responseHeaders: global::System.Linq.Enumerable.ToDictionary(
__response.Headers,
h => h.Key,
h => h.Value),
};
h => h.Value));
}

if (__effectiveReadResponseAsString)
Expand Down Expand Up @@ -389,17 +388,15 @@ partial void ProcessListModelsResponseContent(
}
catch (global::System.Exception __ex)
{
throw new global::Inworld.ApiException(
throw global::Inworld.ApiException.Create(
statusCode: __response.StatusCode,
message: __content ?? __response.ReasonPhrase ?? string.Empty,
innerException: __ex,
statusCode: __response.StatusCode)
{
ResponseBody = __content,
ResponseHeaders = global::System.Linq.Enumerable.ToDictionary(
responseBody: __content,
responseHeaders: global::System.Linq.Enumerable.ToDictionary(
__response.Headers,
h => h.Key,
h => h.Value),
};
h => h.Value));
}
}
else
Expand Down Expand Up @@ -436,17 +433,15 @@ partial void ProcessListModelsResponseContent(
{
}

throw new global::Inworld.ApiException(
throw global::Inworld.ApiException.Create(
statusCode: __response.StatusCode,
message: __content ?? __response.ReasonPhrase ?? string.Empty,
innerException: __ex,
statusCode: __response.StatusCode)
{
ResponseBody = __content,
ResponseHeaders = global::System.Linq.Enumerable.ToDictionary(
responseBody: __content,
responseHeaders: global::System.Linq.Enumerable.ToDictionary(
__response.Headers,
h => h.Key,
h => h.Value),
};
h => h.Value));
}
}

Expand Down
Loading