Example #1
0
        private GetIpDetailsResponse FetchIpFromDbIfExistAndCache(GetIpRequest ipRequest)
        {
            var result = dbService.GetIpDetails(ipRequest);

            cacheService.Add(ipRequest.Ip, ipRequest.Ip, DateTimeOffset.UtcNow.AddHours(1));
            return(result);
        }
Example #2
0
        public GetIpDetailsResponse FetchIp(GetIpRequest ipRequest)
        {
            if (CheckIfExistInCache(ipRequest))
            {
                return((GetIpDetailsResponse)cacheService.GetValue(ipRequest.Ip));
            }

            if (CheckIfIpExistInDatabase(ipRequest))
            {
                FetchIpFromDbIfExistAndCache(ipRequest);
            }
            else
            {
                //must refactor this to other  methods
                IpResponse resultFromLib = (IpResponse)infoProvider.GetDetails(ipRequest.Ip);

                if (resultFromLib != null)
                {
                    WriteIpInDbRequest writeInDbRequest = new WriteIpInDbRequest//to investigate why extension method dont work
                    {
                        Ip        = ipRequest.Ip,
                        City      = resultFromLib.City,
                        Country   = resultFromLib.Country,
                        Continent = resultFromLib.Continent,
                        Latitude  = resultFromLib.Latitude,
                        Longitude = resultFromLib.Longitude
                    };
                    dbService.WriteIpDetailsinDataBase(writeInDbRequest);
                    cacheService.Add(ipRequest.Ip, ipRequest.Ip, DateTimeOffset.UtcNow.AddHours(1));
                    //must return the ip from library
                }
            }

            return(new GetIpDetailsResponse());//must fix this
        }
Example #3
0
 private bool CheckIfExistInCache(GetIpRequest ipRequest)
 {
     if (cacheService.GetValue(ipRequest.Ip) == null)
     {
         return(false);
     }
     return(true);
 }
Example #4
0
 private bool CheckIfIpExistInDatabase(GetIpRequest ipRequest)
 {
     if (dbService.GetIpDetails(ipRequest) == null)
     {
         return(false);
     }
     return(true);
 }
Example #5
0
        public GetIpDetailsResponse GetIpDetails(GetIpRequest request)
        {
            string sql        = @"Select * From ipdetails Where Ip=@ip";
            var    parameters = new { ip = request.Ip };

            using (var con = GetSqlConnection())
            {
                return(con.Query <GetIpDetailsResponse>(sql, parameters).FirstOrDefault());
            }
        }
Example #6
0
        public HttpResponseMessage GetIp([FromBody] GetIpRequest ipRequest)
        {
            if (ipRequest == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Please give an Ip"));
            }

            var response = mainService.FetchIp(ipRequest);

            if (response.IpDetails != null)
            {
                return(Request.CreateResponse <GetIpDetailsResponse>(HttpStatusCode.OK, response));
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, " Ip Not Found"));
            }
        }