Bespoke.DynamicDnsUpdater.Client.IpAddressResolver.GetPublicIpAddressFromDynDns C# (CSharp) Method

GetPublicIpAddressFromDynDns() public method

Get the public IP Address from DynDns at: http://checkip.dyndns.org/
public GetPublicIpAddressFromDynDns ( ) : string
return string
        public string GetPublicIpAddressFromDynDns()
        {
            string uri = "http://checkip.dyndns.org/";
            string responseBody = string.Empty;

            try
            {
                WebRequest request = WebRequest.Create(uri);
                using (WebResponse response = request.GetResponse())
                {
                    using (StreamReader stream = new StreamReader(response.GetResponseStream()))
                    {
                        responseBody = stream.ReadToEnd();
                    }
                }
            }
            catch (Exception)
            {
                //TODO: Log Exception
            }

            var options = RegexOptions.IgnoreCase | RegexOptions.Compiled;

            var regex = new Regex(@"<body>Current IP Address:\s?(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s?</body>",options);

            var match = regex.Match(responseBody);

            if(match.Success && match.Groups.Count > 1)
            {
                return match.Groups[1].Value;
            }

            return null;
        }

Usage Example

        public void CanGetPublicIpAddressFromDynDns()
        {
            var resolver = new IpAddressResolver();
            var ip = resolver.GetPublicIpAddressFromDynDns();

            Assert.AreEqual(ExpectedPublicIpAddress, ip);
        }