diff --git a/lib/geocoder/lookups/opencagedata.rb b/lib/geocoder/lookups/opencagedata.rb index 2dec74b6578a22118950cee37e6c78a1cdda6d73..1d469c799243c2c75ff0ce18d09976551a6363a7 100644 --- a/lib/geocoder/lookups/opencagedata.rb +++ b/lib/geocoder/lookups/opencagedata.rb @@ -47,6 +47,12 @@ module Geocoder::Lookup :language => (query.language || configuration.language) }.merge(super) + [:countrycode, :min_confidence, :no_dedupe, :no_annotations, :no_record, :limit].each do |option| + unless (option_value = query.options[option]).nil? + params[option] = option_value + end + end + unless (bounds = query.options[:bounds]).nil? params[:bounds] = bounds.map{ |point| "%f,%f" % point }.join(',') end diff --git a/test/unit/lookups/opencagedata_test.rb b/test/unit/lookups/opencagedata_test.rb index 496ec14a5220e6d6f3051b7e6e1f25836b978529..7ed0eb321aca2694bb4dda2473224f51a77f407e 100644 --- a/test/unit/lookups/opencagedata_test.rb +++ b/test/unit/lookups/opencagedata_test.rb @@ -30,6 +30,24 @@ class OpencagedataTest < GeocoderTestCase assert_match(/bounds=40.0+%2C-120.0+%2C39.0+%2C-121.0+/, url) end + def test_opencagedata_query_url_contains_optional_params + lookup = Geocoder::Lookup::Opencagedata.new + url = lookup.query_url(Geocoder::Query.new( + "Some street", + :countrycode => 'fr', + :min_confidence => 5, + :no_dedupe => 1, + :no_annotations => 1, + :no_record => 1, + :limit => 2 + )) + assert_match(/countrycode=fr/, url) + assert_match(/min_confidence=5/, url) + assert_match(/no_dedupe=1/, url) + assert_match(/no_annotations=1/, url) + assert_match(/no_record=1/, url) + assert_match(/limit=2/, url) + end def test_no_results results = Geocoder.search("no results")