made auth more efficient

This commit is contained in:
Vincent Cloutier 2022-12-18 14:54:33 -05:00
parent 0f46e5ddf7
commit 1d38081a6a

View file

@ -1,5 +1,6 @@
using System; using System;
using System.Threading; using System.Threading;
using System.Timers;
using System.Threading.Tasks; using System.Threading.Tasks;
using BirdsiteLive.Common.Settings; using BirdsiteLive.Common.Settings;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -21,7 +22,9 @@ namespace BirdsiteLive.Twitter.Tools
{ {
private readonly ILogger<TwitterAuthenticationInitializer> _logger; private readonly ILogger<TwitterAuthenticationInitializer> _logger;
private static bool _initialized; private static bool _initialized;
private static System.Timers.Timer aTimer;
private readonly HttpClient _httpClient = new HttpClient(); private readonly HttpClient _httpClient = new HttpClient();
private HttpClient _twitterClient;
private String _token; private String _token;
public String BearerToken { public String BearerToken {
get { return "AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"; } get { return "AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"; }
@ -34,6 +37,12 @@ namespace BirdsiteLive.Twitter.Tools
public TwitterAuthenticationInitializer(ILogger<TwitterAuthenticationInitializer> logger) public TwitterAuthenticationInitializer(ILogger<TwitterAuthenticationInitializer> logger)
{ {
_logger = logger; _logger = logger;
aTimer = new System.Timers.Timer();
aTimer.Interval = 900000; // 15 minutes
aTimer.Elapsed += async (sender, e) => await RefreshCred();
aTimer.Start();
} }
#endregion #endregion
@ -44,6 +53,19 @@ namespace BirdsiteLive.Twitter.Tools
await InitTwitterCredentials(); 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() private async Task<(string, string)> GetCred()
{ {
string token; string token;
@ -68,7 +90,7 @@ namespace BirdsiteLive.Twitter.Tools
{ {
try try
{ {
(_, _token) = await GetCred(); await RefreshCred();
_initialized = true; _initialized = true;
return; return;
} }
@ -82,14 +104,9 @@ namespace BirdsiteLive.Twitter.Tools
public async Task<HttpClient> MakeHttpClient() public async Task<HttpClient> MakeHttpClient()
{ {
(string bearer, string guest) = await GetCred(); if (_twitterClient == null)
await RefreshCred();
HttpClient client = new HttpClient(); return _twitterClient;
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;
} }
} }
} }