diff --git a/lib/travis/web/api_redirect.rb b/lib/travis/web/api_redirect.rb index d53fae9e..35361482 100644 --- a/lib/travis/web/api_redirect.rb +++ b/lib/travis/web/api_redirect.rb @@ -24,6 +24,10 @@ class Travis::Web::ApiRedirect < Sinatra::Base redirect! end + get '/:owner_name/:name/builds.json' do + redirect! "/repos#{request.fullpath}" + end + after do redirect! if catch_all? and api_call? end @@ -40,8 +44,8 @@ class Travis::Web::ApiRedirect < Sinatra::Base settings.api_types.include? preferred end - def redirect! - path = File.join(settings.api_endpoint, request.fullpath) + def redirect!(path = nil) + path = File.join(settings.api_endpoint, path || request.fullpath) redirect(path, 301) end end diff --git a/spec/api_redirect_spec.rb b/spec/api_redirect_spec.rb index ce72819d..9e121083 100644 --- a/spec/api_redirect_spec.rb +++ b/spec/api_redirect_spec.rb @@ -30,4 +30,10 @@ describe Travis::Web::ApiRedirect do it 'does not redirect asset requests' do get('/version').should_not be_redirect end + + it 'redirects /:owner_name/:name/builds.json' do + response = get('/foo/bar/builds.json') + response.should be_redirect + response.headers['Location'].should == 'https://api.travis-ci.org/repos/foo/bar/builds.json' + end end