travis-api/lib/travis/api/v3/service.rb
2015-01-23 19:27:01 +01:00

39 lines
922 B
Ruby

module Travis::API::V3
class Service
def self.required_params
@required_params ||= []
end
def self.params(*list, optional: false, prefix: nil)
@params ||= []
list.each do |param|
method = param = param.to_s
param = "#{prefix}.#{method}" if prefix
define_method(method) { params[param] }
required_params << param unless optional
@params << param
end
@params
end
attr_accessor :access_control, :params
def initialize(access_control, params)
@access_control = access_control
@params = params
end
def required_params?
required_params.all? { |param| params.include? param }
end
def required_params
self.class.required_params
end
def run_service(name, added_params = {})
Services[name].new(access_control, params: params.merge(added_params)).run
end
end
end