diff --git a/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs b/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs index 8eb729c..2df326a 100644 --- a/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs +++ b/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using System.Timers; using System.Threading.Tasks; using BirdsiteLive.Common.Settings; using Microsoft.Extensions.Logging; @@ -21,7 +22,9 @@ namespace BirdsiteLive.Twitter.Tools { private readonly ILogger _logger; private static bool _initialized; + private static System.Timers.Timer aTimer; private readonly HttpClient _httpClient = new HttpClient(); + private HttpClient _twitterClient; private String _token; public String BearerToken { get { return "AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"; } @@ -34,6 +37,12 @@ namespace BirdsiteLive.Twitter.Tools public TwitterAuthenticationInitializer(ILogger logger) { _logger = logger; + + aTimer = new System.Timers.Timer(); + aTimer.Interval = 900000; // 15 minutes + aTimer.Elapsed += async (sender, e) => await RefreshCred(); + + aTimer.Start(); } #endregion @@ -44,6 +53,19 @@ namespace BirdsiteLive.Twitter.Tools await InitTwitterCredentials(); } + private async Task RefreshCred() + { + (string bearer, string guest) = await GetCred(); + + HttpClient client = new HttpClient(); + client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", $"Bearer " + bearer); + client.DefaultRequestHeaders.TryAddWithoutValidation("x-guest-token", guest); + client.DefaultRequestHeaders.TryAddWithoutValidation("Referer", "https://twitter.com/"); + client.DefaultRequestHeaders.TryAddWithoutValidation("x-twitter-active-user", "yes"); + + _twitterClient = client; + } + private async Task<(string, string)> GetCred() { string token; @@ -68,7 +90,7 @@ namespace BirdsiteLive.Twitter.Tools { try { - (_, _token) = await GetCred(); + await RefreshCred(); _initialized = true; return; } @@ -82,14 +104,9 @@ namespace BirdsiteLive.Twitter.Tools public async Task MakeHttpClient() { - (string bearer, string guest) = await GetCred(); - - HttpClient client = new HttpClient(); - client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", $"Bearer " + bearer); - client.DefaultRequestHeaders.TryAddWithoutValidation("x-guest-token", guest); - client.DefaultRequestHeaders.TryAddWithoutValidation("Referer", "https://twitter.com/"); - client.DefaultRequestHeaders.TryAddWithoutValidation("x-twitter-active-user", "yes"); - return client; + if (_twitterClient == null) + await RefreshCred(); + return _twitterClient; } } } \ No newline at end of file