Assert.Equal("1234abcd", translateApi.AccessToken);
// 期待値との差が 3 秒以内であるか
- var expectedExpiresAt = DateTime.Now + TimeSpan.FromSeconds(1000 - 30);
+ var expectedExpiresAt = DateTimeUtc.Now + TimeSpan.FromSeconds(1000 - 30);
Assert.True((translateApi.RefreshAccessTokenAt - expectedExpiresAt).Duration() < TimeSpan.FromSeconds(3));
}
var translateApi = mock.Object;
translateApi.AccessToken = "1234abcd";
- translateApi.RefreshAccessTokenAt = DateTime.Now + TimeSpan.FromMinutes(3);
+ translateApi.RefreshAccessTokenAt = DateTimeUtc.Now + TimeSpan.FromMinutes(3);
await translateApi.UpdateAccessTokenIfExpired()
.ConfigureAwait(false);
var translateApi = mock.Object;
translateApi.AccessToken = "1234abcd";
- translateApi.RefreshAccessTokenAt = DateTime.Now - TimeSpan.FromMinutes(3);
+ translateApi.RefreshAccessTokenAt = DateTimeUtc.Now - TimeSpan.FromMinutes(3);
await translateApi.UpdateAccessTokenIfExpired()
.ConfigureAwait(false);
Assert.Equal("5678efgh", translateApi.AccessToken);
// 期待値との差が 3 秒以内であるか
- var expectedExpiresAt = DateTime.Now + TimeSpan.FromSeconds(1000 - 30);
+ var expectedExpiresAt = DateTimeUtc.Now + TimeSpan.FromSeconds(1000 - 30);
Assert.True((translateApi.RefreshAccessTokenAt - expectedExpiresAt).Duration() < TimeSpan.FromSeconds(3));
}
public static readonly Uri TranslateEndpoint = new Uri("https://api.microsofttranslator.com/v2/Http.svc/Translate");
public string AccessToken { get; internal set; }
- public DateTime RefreshAccessTokenAt { get; internal set; }
+ public DateTimeUtc RefreshAccessTokenAt { get; internal set; }
private HttpClient Http => this.localHttpClient ?? Networking.Http;
private readonly HttpClient localHttpClient;
public async Task UpdateAccessTokenIfExpired()
{
- if (this.AccessToken != null && this.RefreshAccessTokenAt > DateTime.Now)
+ if (this.AccessToken != null && this.RefreshAccessTokenAt > DateTimeUtc.Now)
return;
var (accessToken, expiresIn) = await this.GetAccessTokenAsync()
this.AccessToken = accessToken;
// アクセストークンの実際の有効期限より 30 秒早めに失効として扱う
- this.RefreshAccessTokenAt = DateTime.Now + expiresIn - TimeSpan.FromSeconds(30);
+ this.RefreshAccessTokenAt = DateTimeUtc.Now + expiresIn - TimeSpan.FromSeconds(30);
}
internal virtual async Task<(string AccessToken, TimeSpan ExpiresIn)> GetAccessTokenAsync()