module Travis::API::V3 class AccessControl::Generic def self.for_request(type, payload, env) end def self.auth_type(*list) list.each { |e| (AccessControl::REGISTER[e] ||= []) << self } end def visible?(object) full_access? or dispatch(object) end def user end def logged_in? false end protected def build_visible?(build) visible? build.repository end def organization_visible?(organization) unrestricted_api? end def repository_visible?(repository) return true if unrestricted_api? and not repository.private? private_repository_visible?(repository) end def private_repository_visible?(repository) false end def full_access? false end def public_api? !Travis.config.private_api end def unrestricted_api? full_access? or logged_in? or public_api? end private def dispatch(object, method = caller_locations.first.base_label) method = method_for(object.class, method) send(method, object) if respond_to?(method, true) end @@method_for_cache = Tool::ThreadLocal.new def method_for(type, method) @@method_for_cache[[type, method]] ||= begin prefix = type.name.sub(/^Travis::API::V3::Models::/, ''.freeze).underscore "#{prefix}_#{method}" end end end end