예제 #1
0
        public override async Task <int> Execute()
        {
            _selfKey ??= await Utils.FromEncryptedJson <string>("nexusapikey");

            var keys = await _sql.GetNexusApiKeysWithCounts(0);

            _logger.Log(LogLevel.Information, $"Verifying {keys.Count} API Keys");
            foreach (var key in keys)
            {
                try
                {
                    var client = new TrackingClient(_sql, key);

                    var status = await client.GetUserStatus();

                    if (!status.is_premium)
                    {
                        await _sql.DeleteNexusAPIKey(key.Key);

                        continue;
                    }

                    var(daily, hourly) = await client.GetRemainingApiCalls();

                    await _sql.SetNexusAPIKey(key.Key, daily, hourly);
                }
                catch (Exception)
                {
                    _logger.Log(LogLevel.Warning, "Update error, purging API key");
                    await _sql.DeleteNexusAPIKey(key.Key);
                }
            }

            return(keys.Count);
        }
예제 #2
0
        public async Task <NexusApiClient> GetClient()
        {
            var keys = await _sql.GetNexusApiKeysWithCounts(1500);

            foreach (var key in keys.Where(k => k.Key != _selfKey))
            {
                try
                {
                    var client = new TrackingClient(_sql, key);
                    if (await client.IsPremium())
                    {
                        return(client);
                    }

                    _logger.LogWarning($"Purging non premium key");
                    await _sql.DeleteNexusAPIKey(key.Key);

                    continue;
                }
                catch (Exception ex)
                {
                    Utils.Log($"Error getting tracking client: {ex}");
                }
            }

            var bclient = await NexusApiClient.Get();

            await bclient.GetUserStatus();

            return(bclient);
        }
예제 #3
0
        public async Task <NexusApiClient> GetClient()
        {
            var keys = await _sql.GetNexusApiKeysWithCounts(1500);

            foreach (var key in keys.Where(k => k.Key != _selfKey))
            {
                var client = new TrackingClient(_sql, key);
                if (!await client.IsPremium())
                {
                    _logger.LogWarning($"Purging non premium key");
                    await _sql.DeleteNexusAPIKey(key.Key);

                    continue;
                }

                return(client);
            }

            return(await NexusApiClient.Get());
        }