diff --git a/lib/api_client_builder/url_generator.rb b/lib/api_client_builder/url_generator.rb index 409a45e..ca3c7f3 100644 --- a/lib/api_client_builder/url_generator.rb +++ b/lib/api_client_builder/url_generator.rb @@ -21,7 +21,7 @@ def initialize(domain) # # @return [URI] the fully built route def build_route(route, **params) - string_params = route.split(%r{[\/=&]}).select { |param| param.start_with?(':') } + string_params = route.split(%r{[\/?=&]}).select { |param| param.start_with?(':') } symboled_params = string_params.map { |param| param.tr(':', '').to_sym } new_route = route.clone diff --git a/spec/lib/api_client_builder/url_generator_spec.rb b/spec/lib/api_client_builder/url_generator_spec.rb index 4b19b5c..3b926cd 100644 --- a/spec/lib/api_client_builder/url_generator_spec.rb +++ b/spec/lib/api_client_builder/url_generator_spec.rb @@ -59,6 +59,19 @@ module APIClientBuilder end end + context "the route has URL param just after a colon params path" do + let(:url) { 'objects/:object_id?foo=bar' } + let(:url_generator) { URLGenerator.new('https://www.domain.com/api/endpoints/') } + + subject do + route = url_generator.build_route(url, object_id: 1) + end + + it do + is_expected.to eq URI.parse('https://www.domain.com/api/endpoints/objects/1?foo=bar') + end + end + end context 'route with colon params and non matching keys' do