-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathQuotaError.cs
More file actions
47 lines (42 loc) · 1.63 KB
/
QuotaError.cs
File metadata and controls
47 lines (42 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using ServiceStack;
using System;
namespace BlazorDiffusion.ServiceModel;
public class QuotaError
{
public string ErrorCode { get; set; }
public string Message { get; set; }
public TimeSpan TimeRemaining { get; set; }
public int CreditsUsed { get; set; }
public int CreditsRequested { get; set; }
public int CreditsRemaining { get; set; }
public int DailyQuota { get; set; }
public string? RequestedDetails { get; set; }
public ResponseStatus ToResponseStatus() => new()
{
ErrorCode = ErrorCode,
Message = Message,
Meta = new()
{
[nameof(TimeRemaining)] = TimeRemaining.ToString("hh\\:mm\\:ss"),
[nameof(DailyQuota)] = $"{DailyQuota}",
[nameof(CreditsUsed)] = $"{CreditsUsed}",
[nameof(CreditsRequested)] = $"{CreditsRequested}",
[nameof(RequestedDetails)] = RequestedDetails ?? string.Empty,
},
};
public static QuotaError FromResponseStatus(ResponseStatus status)
{
var to = new QuotaError
{
ErrorCode = status.ErrorCode,
Message = status.Message,
TimeRemaining = TimeSpan.Parse(status.Meta[nameof(TimeRemaining)]),
DailyQuota = int.Parse(status.Meta[nameof(DailyQuota)]),
CreditsUsed = int.Parse(status.Meta[nameof(CreditsUsed)]),
CreditsRequested = int.Parse(status.Meta[nameof(CreditsRequested)]),
RequestedDetails = status.Meta.TryGetValue(nameof(RequestedDetails), out var details) ? details : null,
};
to.CreditsRemaining = to.DailyQuota - to.CreditsUsed;
return to;
}
}