From f19bfa1ada57f83141a15bfb57ad5efb527f6bf4 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Tue, 19 Aug 2014 10:05:45 +0200 Subject: [PATCH 1/3] set up mustermann --- Gemfile.lock | 10 +++++++--- lib/travis/api/app/base.rb | 2 ++ travis-api.gemspec | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8def4837..8b7c314d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,7 +37,7 @@ GIT GIT remote: git://github.com/travis-ci/travis-core.git - revision: 335b643a81025ff56a38a3f01b4866cf2e08a385 + revision: beaa1c74ff078f2820c65a3d6c4a2aa0bd6c9c0b specs: travis-core (0.0.1) actionmailer (~> 3.2.19) @@ -68,13 +68,13 @@ GIT GIT remote: git://github.com/travis-ci/travis-support.git - revision: 178e30d2976ce773b9cf8d5ee3c07c19b97bfb55 + revision: 930b1320b20271b6a08f44870ac55ba8d3ca2c1b specs: travis-support (0.0.1) GIT remote: git://github.com/travis-ci/travis-yaml.git - revision: 6b10f1e5f8b32c760ac41d93ee4cc3bd714c8e5d + revision: 8b02f2753ac488e6f5ea071cf9a96cce097c4e58 specs: travis-yaml (0.1.0) @@ -90,6 +90,7 @@ PATH travis-api (0.0.1) backports (~> 2.5) memcachier + mustermann (~> 0.3) pg (~> 0.13.2) rack-contrib (~> 1.1) rack-ssl (~> 1.3, >= 1.3.3) @@ -207,6 +208,8 @@ GEM metaclass (~> 0.0.1) multi_json (1.10.1) multipart-post (2.0.0) + mustermann (0.3.0) + tool (~> 0.2) net-http-persistent (2.9.4) net-http-pipeline (1.0.1) pg (0.13.2) @@ -297,6 +300,7 @@ GEM tilt (1.4.1) timers (3.0.1) hitimes + tool (0.2.2) treetop (1.4.15) polyglot polyglot (>= 0.3.1) diff --git a/lib/travis/api/app/base.rb b/lib/travis/api/app/base.rb index d5f07bee..86b633f1 100644 --- a/lib/travis/api/app/base.rb +++ b/lib/travis/api/app/base.rb @@ -1,11 +1,13 @@ require 'travis/api/app' require 'sinatra/base' +require 'mustermann' class Travis::Api::App # Superclass for any endpoint and middleware. # Pulls in relevant helpers and extensions. class Base < Sinatra::Base register Extensions::SmartConstants + register Mustermann error NotImplementedError do content_type :txt diff --git a/travis-api.gemspec b/travis-api.gemspec index 7719fff7..f02bd8b8 100644 --- a/travis-api.gemspec +++ b/travis-api.gemspec @@ -243,6 +243,7 @@ Gem::Specification.new do |s| s.add_dependency 'thin', '~> 1.4' s.add_dependency 'sinatra', '~> 1.3' s.add_dependency 'sinatra-contrib', '~> 1.3' + s.add_dependency 'mustermann', '~> 0.3' s.add_dependency 'redcarpet', '~> 2.1' s.add_dependency 'rack-ssl', '~> 1.3', '>= 1.3.3' s.add_dependency 'rack-contrib', '~> 1.1' From b448410da56d711933ca04bfeea374f62b06375c Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Tue, 19 Aug 2014 10:45:55 +0200 Subject: [PATCH 2/3] have :id in repos controller only match digits --- lib/travis/api/app/endpoint/repos.rb | 17 +++++++++-------- spec/unit/endpoint/repos_spec.rb | 13 ++++++++++++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/travis/api/app/endpoint/repos.rb b/lib/travis/api/app/endpoint/repos.rb index 1e52b7d0..f960c8dc 100644 --- a/lib/travis/api/app/endpoint/repos.rb +++ b/lib/travis/api/app/endpoint/repos.rb @@ -3,6 +3,8 @@ require 'travis/api/app' class Travis::Api::App class Endpoint class Repos < Endpoint + set :pattern, capture: { id: /\d+/ } + # Endpoint for getting all repositories. # # You can filter the repositories by adding parameters to the request. For example, you can get all repositories @@ -18,14 +20,6 @@ class Travis::Api::App end end - # Retrieves repositories for a given owner. - get '/:owner_name' do - pass if params[:owner_name] =~ /^\d+$/ # so we don't capture '/:id' - prefer_follower do - respond_with service(:find_repos, params) - end - end - # Gets the repository with the given id. # # ### Response @@ -37,6 +31,13 @@ class Travis::Api::App end end + # Retrieves repositories for a given owner. + get '/:owner_name' do + prefer_follower do + respond_with service(:find_repos, params) + end + end + get '/:id/cc' do respond_with service(:find_repo, params.merge(schema: 'cc')) end diff --git a/spec/unit/endpoint/repos_spec.rb b/spec/unit/endpoint/repos_spec.rb index bbfc9579..67dc5d89 100644 --- a/spec/unit/endpoint/repos_spec.rb +++ b/spec/unit/endpoint/repos_spec.rb @@ -1,5 +1,16 @@ require 'spec_helper' describe Travis::Api::App::Endpoint::Repos do - it 'has to be tested' + before do + described_class.get('/spec/match/:id') { "id" } + described_class.get('/spec/match/:name') { "name" } + end + + it 'matches id with digits' do + get('/repos/spec/match/123').body.should be == "id" + end + + it 'does not match id with non-digits' do + get('/repos/spec/match/f123').body.should be == "name" + end end From 219f65f00a6c03edb85c36b72e2578deadf4efde Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Mon, 1 Dec 2014 12:44:35 +0100 Subject: [PATCH 3/3] bump up mustermann dependency --- Gemfile.lock | 2 +- travis-api.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e4f2559a..e6706c0a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -84,7 +84,7 @@ PATH travis-api (0.0.1) backports (~> 2.5) memcachier - mustermann (~> 0.3) + mustermann (~> 0.4) pg (~> 0.13.2) rack-contrib (~> 1.1) rack-ssl (~> 1.3, >= 1.3.3) diff --git a/travis-api.gemspec b/travis-api.gemspec index b65afd08..d98c31da 100644 --- a/travis-api.gemspec +++ b/travis-api.gemspec @@ -259,7 +259,7 @@ Gem::Specification.new do |s| s.add_dependency 'thin', '~> 1.4' s.add_dependency 'sinatra', '~> 1.3' s.add_dependency 'sinatra-contrib', '~> 1.3' - s.add_dependency 'mustermann', '~> 0.3' + s.add_dependency 'mustermann', '~> 0.4' s.add_dependency 'redcarpet', '~> 2.1' s.add_dependency 'rack-ssl', '~> 1.3', '>= 1.3.3' s.add_dependency 'rack-contrib', '~> 1.1'