private GetIpDetailsResponse FetchIpFromDbIfExistAndCache(GetIpRequest ipRequest) { var result = dbService.GetIpDetails(ipRequest); cacheService.Add(ipRequest.Ip, ipRequest.Ip, DateTimeOffset.UtcNow.AddHours(1)); return(result); }
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 }
private bool CheckIfExistInCache(GetIpRequest ipRequest) { if (cacheService.GetValue(ipRequest.Ip) == null) { return(false); } return(true); }
private bool CheckIfIpExistInDatabase(GetIpRequest ipRequest) { if (dbService.GetIpDetails(ipRequest) == null) { return(false); } return(true); }
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()); } }
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")); } }