Encapsulates arguments sent to the FindNearbyPostalCodes service. There are two variants: 1. Lat/Lon - Returns postal codes nearby this point. 2. Postal Code/Country - Returns postal codes nearby this postal code.
示例#1
0
 public ReadOnlyCollection <NearbyPostalCode> FindNearbyPostalCodes(NearbyPostalCodesFinder finder)
 {
     if (finder != null)
     {
         finder.UserName = _userName;
     }
     return(_client.FindNearbyPostalCodes(finder));
 }
示例#2
0
 public void GeoNames_FindNearbyPostalCodes_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesClient())
     {
         var finder  = new NearbyPostalCodesFinder();
         var results = geoNames.FindNearbyPostalCodes(finder);
         results.ShouldBeNull();
     }
 }
示例#3
0
        /// <summary>
        /// Lookup a postal code by either Latitude/Longitude or Postalcode/Country/LocalCountry See
        /// <seealso cref="http://www.geonames.org/export/web-services.html#findNearbyPostalCodes">Official
        /// GeoNames postalCodeLookup Documentation</seealso> for more information.
        /// </summary>
        /// <param name="finder">Arguments sent to the GeoNames service.</param>
        /// <returns>The closest postal codes to the given lat/lon. If the lat/lon is within a postal
        /// code it will be the first result with a zero distance. The unit of the distance element
        /// is 'km'.</returns>
        public ReadOnlyCollection <NearbyPostalCode> FindNearbyPostalCodes(NearbyPostalCodesFinder finder)
        {
            if (finder == null)
            {
                throw new ArgumentNullException("finder");
            }

            var response = ChannelFindNearbyPostalCodes(finder);
            var results  = response.Items;

            return(results != null ? new ReadOnlyCollection <NearbyPostalCode>(results) : null);
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldHaveDefaultValues()
        {
            var finder = new NearbyPostalCodesFinder();

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(0.0);
            finder.Longitude.ShouldEqual(0.0);
            finder.UserName.ShouldBeNull();
            finder.Language.ShouldEqual("local");
            finder.RadiusInKm.ShouldEqual(0.0);
            finder.MaxRows.ShouldEqual(100);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldHaveDefaultValues()
        {
            var finder = new NearbyPostalCodesFinder();

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(0.0);
            finder.Longitude.ShouldEqual(0.0);
            finder.UserName.ShouldBeNull();
            finder.Language.ShouldEqual("local");
            finder.RadiusInKm.ShouldEqual(0.0);
            finder.MaxRows.ShouldEqual(100);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
示例#6
0
        public void GeoNames_FindNearbyPostalCodes_ShouldReturn1Result_ForMollysLatitudeAndLongitude_WhenNoRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesContainer(UserName))
            {
                var finder = new NearbyPostalCodesFinder
                {
                    Latitude  = 40.611271,
                    Longitude = -75.378110,
                };
                var results = geoNames.FindNearbyPostalCodes(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].Value.ShouldEqual("18015");
            }
        }
示例#7
0
        public void GeoNames_FindNearbyPostalCodes_ShouldReturn10Results_ForMollysLatitudeAndLongitude_When10KmRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPostalCodesFinder
                {
                    Latitude   = 40.611271,
                    Longitude  = -75.378110,
                    UserName   = UserName,
                    RadiusInKm = 10.0,
                    MaxRows    = 10,
                };
                var results = geoNames.FindNearbyPostalCodes(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(10);
                results[0].Value.ShouldEqual("18015");
            }
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldBePublic()
        {
            var finder = new NearbyPostalCodesFinder
            {
                Latitude = 90.0,
                Longitude = 180.0,
                UserName = "******",
                Language = "language",
                RadiusInKm = 1.0,
                MaxRows = 2,
                Style = ResultStyle.Medium,
            };

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(90.0);
            finder.Longitude.ShouldEqual(180.0);
            finder.UserName.ShouldNotBeNull();
            finder.Language.ShouldNotBeNull();
            finder.MaxRows.ShouldEqual(2);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldBePublic()
        {
            var finder = new NearbyPostalCodesFinder
            {
                Latitude   = 90.0,
                Longitude  = 180.0,
                UserName   = "******",
                Language   = "language",
                RadiusInKm = 1.0,
                MaxRows    = 2,
                Style      = ResultStyle.Medium,
            };

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(90.0);
            finder.Longitude.ShouldEqual(180.0);
            finder.UserName.ShouldNotBeNull();
            finder.Language.ShouldNotBeNull();
            finder.MaxRows.ShouldEqual(2);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
示例#10
0
 private NearbyPostalCodeResults ChannelFindNearbyPostalCodes(NearbyPostalCodesFinder finder, int retry = 0)
 {
     try
     {
         if (String.IsNullOrEmpty(finder.PostalCode))
         {
             return(Channel.FindNearbyPostalCodes(finder.Latitude, finder.Longitude, finder.RadiusInKm,
                                                  finder.Country, finder.LocalCountry,
                                                  finder.MaxRows, finder.Style, finder.UserName));
         }
         return(Channel.FindNearbyPostalCodes(finder.PostalCode, finder.Country, finder.RadiusInKm,
                                              finder.MaxRows, finder.Style, finder.UserName));
     }
     catch (WebException ex)
     {
         if (retry < RetryLimit && ex.Message.StartsWith(ClosedConnectionMessage, StringComparison.Ordinal))
         {
             return(ChannelFindNearbyPostalCodes(finder, ++retry));
         }
         throw;
     }
 }
示例#11
0
 public void GeoNames_FindNearbyPostalCodes_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesContainer(null))
     {
         var finder = new NearbyPostalCodesFinder();
         var results = geoNames.FindNearbyPostalCodes(finder);
         results.ShouldBeNull();
     }
 }
示例#12
0
        public void GeoNames_FindNearbyPostalCodes_ShouldReturn1Result_ForMollysLatitudeAndLongitude_WhenNoRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesContainer(UserName))
            {
                var finder = new NearbyPostalCodesFinder
                {
                    Latitude = 40.611271,
                    Longitude = -75.378110,
                };
                var results = geoNames.FindNearbyPostalCodes(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].Value.ShouldEqual("18015");
            }
        }
示例#13
0
 public ReadOnlyCollection<NearbyPostalCode> FindNearbyPostalCodes(NearbyPostalCodesFinder finder)
 {
     if (finder != null) finder.UserName = _userName;
     return _client.FindNearbyPostalCodes(finder);
 }
示例#14
0
        public void GeoNames_FindNearbyPostalCodes_ShouldReturn10Results_ForMollysLatitudeAndLongitude_When10KmRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPostalCodesFinder
                {
                    Latitude = 40.611271,
                    Longitude = -75.378110,
                    UserName = UserName,
                    RadiusInKm = 10.0,
                    MaxRows = 10,
                };
                var results = geoNames.FindNearbyPostalCodes(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(10);
                results[0].Value.ShouldEqual("18015");
            }
        }