- Codeproject.EventBroker.zip
- Codeproject.EventBroker
- Codeproject.EventBroker.Common
- Codeproject.EventBroker.Contracts
- Codeproject.EventBroker.Host
- Codeproject.EventBroker.Service
- Codeproject.EventBroker.sln
- Codeproject.EventBroker.suo
- Codeproject.EventBroker.TestMessagePublisher
- Codeproject.EventBroker.WebUI
- Lib
- Apache
- log4net
- 1.2.10.0
- Castle
- 1.2.0.6623
- Castle.Components.Binder.dll
- Castle.Components.Validator.dll
- Castle.Core.dll
- Castle.DynamicProxy2.dll
- Castle.MicroKernel.dll
- Castle.Windsor.dll
- Microsoft
- SignalR
- SignalR.dll
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Codeproject.EventBroker.Service.Services.Contracts;
using Codeproject.EventBroker.Contracts.Data;
using System.Net;
using Codeproject.EventBroker.Common;
using System.IO;
namespace Codeproject.EventBroker.Service.Utils.Implementation
{
public class GeoLocator : IGeoLocator
{
public GeoLocation ObtainLocationForIPAddress(string ipAddress)
{
try
{
WebClient client = new WebClient();
string locationDump = client.DownloadString(
string.Format("http://api.hostip.info/get_html.php?ip={0}&position=true",
ipAddress));
string[] locationDumpSplit = locationDump.Split(
new string[] { @"\r\n", @"\n" }, StringSplitOptions.RemoveEmptyEntries);
decimal latitude = -1;
decimal longitude = -1;
int found=0;
using (StringReader sr = new StringReader(locationDump))
{
found = 0;
while (sr.Peek() >= 0)
{
string line = sr.ReadLine().ToLower();
if (line.StartsWith("latitude:"))
{
line = line.Replace("latitude:","").Trim();
latitude = decimal.Parse(line);
found++;
}
if (line.StartsWith("longitude:"))
{
line = line.Replace("longitude:", "").Trim();
longitude = decimal.Parse(line);
found++;
}
}
}
if (found == 2)
{
return new GeoLocation(latitude, longitude);
}
else
return null;
}
catch (Exception ex)
{
LogManager.Log.ErrorFormat(
"Could not obtain Latitude/Longitude data for IpAddress {0}\r\n Exception : {1}",
ipAddress, ex);
return null;
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.