public HttpResponseMessage getGeoIpCityFromIpAddress(string IPV4Adress) { try { if (!GeoIPManager.VerifyIpNumber(IPV4Adress)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var geoIpCity = HttpRuntime.Cache["getGeoIpCityFromIpAddress:" + IPV4Adress] as GeoIPCityBo; if (geoIpCity == null) { geoIpCity = _geoIpManager.GetGeoIpCity(IPV4Adress); // Not found in database HttpRuntime.Cache.Add("getGeoIpCityFromIpAddress:" + IPV4Adress, geoIpCity ?? _geoIpCityNACacheItem, null, DateTime.Now.AddMinutes(15), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null); } else if (geoIpCity == _geoIpCityNACacheItem) { geoIpCity = null; } return(geoIpCity == null?Request.CreateResponse(HttpStatusCode.NotFound) : Request.CreateResponse(HttpStatusCode.OK, _geoIpManager.ConvertToGeoIpCityDto(geoIpCity))); } catch (Exception e) { Log.Error(e, "Error getting GeoIpCityFromIp for address {IPV4Adress}"); ErrorSignal.FromCurrentContext().Raise(e); return(Request.CreateResponse(HttpStatusCode.InternalServerError, e.Message)); } }
/// <summary> /// </summary> public GeoLocationController() { _geoIpManager = new GeoIPManager(); _geoIpCityNACacheItem = new GeoIPCityBo(); }