39 lines
922 B
Ruby
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
|