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

View File

@ -33,8 +33,23 @@ module Travis::API::V3
@current_resource = resource_was
end
def route(value, options = {})
current_resource.route = Mustermann.new(prefix) + Mustermann.new(value, options)
def route(value)
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
def get(*args)