public async Task <Location> ResolveIpAsync(string ip, CancellationToken cancellationToken = new CancellationToken()) { if (String.IsNullOrWhiteSpace(ip) || (!ip.Contains(".") && !ip.Contains(":"))) { return(null); } ip = ip.Trim(); Location location; if (_cache.TryGet(ip, out location)) { return(location); } if (ip.IsPrivateNetwork()) { return(null); } var database = await GetDatabaseAsync(cancellationToken); if (database == null) { return(null); } try { var city = database.City(ip); if (city != null && city.Location != null) { location = new Location { Latitude = city.Location.Latitude, Longitude = city.Location.Longitude } } ; _cache.Set(ip, location); return(location); } catch (Exception ex) { if (ex is AddressNotFoundException || ex is GeoIP2Exception) { Log.Trace().Message(ex.Message).Write(); _cache.Set <Location>(ip, null); } else { Log.Error().Exception(ex).Message("Unable to resolve geo location for ip: " + ip).Write(); } return(null); } }
public Location ResolveIp(string ip) { if (String.IsNullOrWhiteSpace(ip) || (!ip.Contains(".") && !ip.Contains(":"))) { return(null); } ip = ip.Trim(); Location location; if (_cache.TryGet(ip, out location)) { return(location); } if (IsPrivateNetwork(ip)) { return(null); } if (_reader.Value == null) { return(null); } try { var city = _reader.Value.City(ip); if (city != null && city.Location != null) { location = new Location { Latitude = city.Location.Latitude, Longitude = city.Location.Longitude } } ; _cache.Set(ip, location); return(location); } catch (Exception ex) { if (ex is AddressNotFoundException || ex is GeoIP2Exception) { Log.Info().Message(ex.Message).Write(); _cache.Set <Location>(ip, null); } else { Log.Error().Exception(ex).Message("Unable to resolve geo location for ip: " + ip).Write(); } return(null); } }
public void CanSetAndGetValue() { var cache = new InMemoryCacheClient(); cache.Set("test", 1); var value = cache.Get <int>("test"); Assert.Equal(1, value); }
public void CanSetAndGetValue() { var cache = new InMemoryCacheClient(); cache.Set("test", 1); var value = cache.Get<int>("test"); Assert.Equal(1, value); }