API v3: add captures route dsl method

This commit is contained in:
Konstantin Haase 2015-05-21 14:57:16 +02:00
parent 0219308a08
commit 0cdecaade3
2 changed files with 22 additions and 4 deletions

View File

@ -15,8 +15,8 @@ module Travis::API::V3
end end
resource :repository do resource :repository do
route '/repo/({repository.id}|{repository.slug})', capture id: :digit, slug: %r{[^/]+%2[fF][^/]+}
capture: { :"repository.id" => :digit } route '/repo/({repository.id}|{repository.slug})'
get :find get :find
post :enable, '/enable' post :enable, '/enable'
@ -40,17 +40,20 @@ module Travis::API::V3
end end
resource :build do resource :build do
capture id: :digit
route '/build/{build.id}' route '/build/{build.id}'
get :find get :find
end end
resource :user do resource :user do
capture id: :digit
route '/user' route '/user'
get :current get :current
get :find, '/{user.id}' get :find, '/{user.id}'
end end
resource :organization do resource :organization do
capture id: :digit
route '/org/{organization.id}' route '/org/{organization.id}'
get :find get :find
end end

View File

@ -33,8 +33,23 @@ module Travis::API::V3
@current_resource = resource_was @current_resource = resource_was
end end
def route(value, options = {}) def route(value)
current_resource.route = Mustermann.new(prefix) + Mustermann.new(value, options) current_resource.route = mustermann(prefix) + mustermann(value)
end
def mustermann(*input)
Mustermann.new(*input, **mustermann_options)
end
def mustermann_options
@mustermann_options ||= { capture: {} }
end
def capture(mapping)
mapping.each_pair do |key, value|
key = "#{current_resource.identifier}.#{key}" if current_resource and not key.to_s.include?(?.)
mustermann_options[:capture][key.to_sym] = value
end
end end
def get(*args) def get(*args)