示例#1
0
        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));
            }
        }
示例#2
0
 /// <summary>
 /// </summary>
 public GeoLocationController()
 {
     _geoIpManager         = new GeoIPManager();
     _geoIpCityNACacheItem = new GeoIPCityBo();
 }