using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace tsCorreos { public class TokenGmail { private string _id; public string id { get { return _id; } set { _id = value; } } DateTime? UltimaUtilizacion; public string Token {get;set;} private GmailConfig _Config; public GmailConfig Config { get { return _Config; } set { _Config = value; } } public static List ListaTokens; public static async Task ObtieneTokenAsync(string id) { if (ListaTokens ==null) throw new Exception("No se ha establecido la lista de tokens para poder enviar correos con Gmail"); var tk= ListaTokens.First(x=>x.id==id); if (tk == null) throw new Exception("No se ha encontrado la configuración para la cuenta " + id); if (!tk.UltimaUtilizacion.HasValue || DateTime.UtcNow.Subtract(tk.UltimaUtilizacion.Value).TotalMinutes > 5) { tk.Token = await GmailTokenManager.ObtenerAccessTokenAsync(tk.Config); tk.UltimaUtilizacion = DateTime.UtcNow; } return tk; } } }