Forge
csharpdeeb25a2
1namespace CascadeIDE.Models;
2
3/// <summary>OAuth tokens Intercom transport. Файл: <c>%LocalAppData%\CascadeIDE\intercom-transport-secrets.toml</c> (ADR 0028).</summary>
4public sealed class IntercomTransportSecrets
5{
6 public string AccessToken { get; set; } = "";
7
8 public string RefreshToken { get; set; } = "";
9
10 /// <summary>UTC expiry access token (ISO 8601 round-trip).</summary>
11 public string AccessExpiresAtUtc { get; set; } = "";
12
13 public string MemberId { get; set; } = "";
14
15 public string DisplayName { get; set; } = "";
16
17 public bool HasRefreshToken => !string.IsNullOrWhiteSpace(RefreshToken);
18
19 public bool HasAccessToken => !string.IsNullOrWhiteSpace(AccessToken);
20
21 public DateTimeOffset? TryGetAccessExpiresAtUtc()
22 {
23 if (string.IsNullOrWhiteSpace(AccessExpiresAtUtc))
24 return null;
25 return DateTimeOffset.TryParse(AccessExpiresAtUtc, out var at) ? at : null;
26 }
27
28 public void SetAccessExpiry(DateTimeOffset expiresAtUtc) =>
29 AccessExpiresAtUtc = expiresAtUtc.ToString("O");
30
31 public void ClearTokens()
32 {
33 AccessToken = "";
34 RefreshToken = "";
35 AccessExpiresAtUtc = "";
36 MemberId = "";
37 DisplayName = "";
38 }
39}
40
View only · write via MCP/CIDE