Beispiel #1
0
        public async static Task Run([TimerTrigger("29 0 * * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"SetToken function executed at: {DateTime.Now.ToLocalTime().ToString(Constants.DateTimeFormatString)}");
            var slackMessenger = new SlackMessenger(_webhookUrl);

            try
            {
                var currentAuthToken = await KeyVault.GetAuthTokenFromKeyVault(_keyVaultName);

                var currentAuthTokenExpiryDate = GetExpiryDate(currentAuthToken);

                if (currentAuthTokenExpiryDate < DateTimeOffset.Now.AddDays(2))
                {
                    log.LogInformation("Auth token expires soon, starting refresh process...");

                    SetupHttpClient();

                    var username     = Environment.GetEnvironmentVariable("BrightUsername");
                    var password     = Environment.GetEnvironmentVariable("BrightPassword");
                    var authResponse = await GetAuthResponse(username, password);

                    if (authResponse.Valid)
                    {
                        log.LogInformation($"New auth token was retrieved successfully. Expiry date: {authResponse.ExpiryDate.ToLocalTime().ToString(Constants.DateTimeFormatString)}");
                        var secretVersion = await KeyVault.SaveAuthTokenToKeyVault(authResponse.Token, _keyVaultName);

                        log.LogInformation($"Auth token was saved to Azure Key Vault, secret version: '{secretVersion}'.");
                    }
                    else
                    {
                        throw new Exception("Auth token response was not valid.");
                    }
                }
                else
                {
                    log.LogInformation($"Auth token expires at {currentAuthTokenExpiryDate.ToLocalTime().ToString(Constants.DateTimeFormatString)}, not refreshing yet.");
                }
            }
            catch (Exception ex)
            {
                var error = $"Error in SetToken: {ex.Message}{Environment.NewLine}{ex.StackTrace}";
                log.LogError(error);
                await slackMessenger.SendMessage(error, Emoji.Exclamation, "SetToken Error");

                throw;
            }
            log.LogInformation($"SetToken function completed at: {DateTime.Now.ToLocalTime().ToString(Constants.DateTimeFormatString)}");
        }