Esempio n. 1
0
        public async Task <IPDetails> Execute(string ip)
        {
            var dbIpDetails    = new IPDetails();
            var details        = new IPDetails();
            var cacheIpDetails = this.FetchIpDetailsFromCache(ip);

            if (cacheIpDetails == null)
            {
                dbIpDetails = await this.FetchIpDetailsFromDb(ip);

                if (dbIpDetails != null)
                {
                    return(dbIpDetails);
                }
            }
            else
            {
                return(cacheIpDetails);
            }

            if (cacheIpDetails == null && dbIpDetails == null)
            {
                IIPInfoProvider ipProvider = IPInfoProviderFactory.GetProvider();
                details = await ipProvider.GetDetails(ip);

                // Store data to Db
                await this.AddIpDetailsToDb(ip, details);

                // Store data to cache
                this.AddIpDetailsToCache(ip, details);
            }

            return(details);
        }
 public GetIpDetailsHandler(IMapper mapper, IIPInfoProvider ipInfoProvider, GeolocationContext geolocationContext,
                            ICacheProvider cacheProvider)
 {
     _mapper             = mapper;
     _ipInfoProvider     = ipInfoProvider;
     _geolocationContext = geolocationContext;
     _cacheProvider      = cacheProvider;
 }
 public ExternalAPIIPDetailsService(
     IIPInfoProvider provider,
     ILogger <ExternalAPIIPDetailsService> logger,
     IMapper mapper)
 {
     this.provider = provider;
     this.logger   = logger;
     this.mapper   = mapper;
 }
Esempio n. 4
0
 public IPDetailsService(
     SqlDbContext ctx,
     IIPInfoProvider ipInfoProvider,
     IMemoryCacheService memory
     )
 {
     _ctx            = ctx;
     _memory         = memory;
     _ipInfoProvider = ipInfoProvider;
 }
Esempio n. 5
0
 public IpStackService(
     ILogger <IpStackService> logger,
     IIPInfoProvider iPInfoProvider,
     IMemoryCache memoryCache,
     IIpRepository ipRepository,
     IJobRepository jobRepository,
     IBackgroundTaskQueue backgroundTaskQueue,
     IConfiguration configuration)
 {
     _logger              = logger;
     _ipInfoProvider      = iPInfoProvider;
     _memoryCache         = memoryCache;
     _ipRepository        = ipRepository;
     _jobRepository       = jobRepository;
     _backgroundTaskQueue = backgroundTaskQueue;
     int.TryParse(configuration.GetSection("MaxBatchSize").Value, out MaxBatchSize);
 }
        public CachedIPDetailsRepositoryDecorator(AppDbContext appDbContext, IMemoryCache cache, IIPInfoProvider ipInfoProvider, IConfiguration configuration, ILogger <CachedIPDetailsRepositoryDecorator> logger)
        {
            _repository      = new IPDetailsRepository(appDbContext);
            _cache           = cache;
            _IIPInfoProvider = ipInfoProvider;
            _logger          = logger;
            _cacheLock       = new SemaphoreSlim(1);


            int AbsoluteExpirationTimeInSeconds;

            if (!int.TryParse(configuration["MemoryCacheOptions:AbsoluteExpirationTimeInSeconds"], out AbsoluteExpirationTimeInSeconds))
            {
                _logger.LogError($"Could not find the absolute expiration time in seconds for the in memory cache in the provided configuration.");
                throw new Exception($"Could not find the absolute expiration time in seconds for the in memory cache in the provided configuration.");
            }

            _memoryCacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromSeconds((double)AbsoluteExpirationTimeInSeconds));
        }
 public IPRequestHandlerService(IIPInfoProvider ipInfoProvider, IMemoryCache memoryCache)
 {
     IpInfoProvider = ipInfoProvider;
     MemoryCache    = memoryCache;
 }
Esempio n. 8
0
 public IPController(ILogger <IPController> logger, IIPInfoProvider infoProvider)
 {
     _logger       = logger;
     _infoProvider = infoProvider;
 }
Esempio n. 9
0
 public MainIpService(IDataBaseService dbService, IIPInfoProvider infoProvider, IMemoryCacheImplementation cacheService)
 {
     this.dbService    = dbService;
     this.infoProvider = infoProvider;
     this.cacheService = cacheService;
 }
 public IPStackServiceExternalApi(IIPInfoProvider iIPInfoProvider)
 {
     _iIPInfoProvider = iIPInfoProvider;
 }