class CronForGithub::Ping

Constants

BASE
NAMESPACE
RESERVED_REFS

Public Instance Methods

clear(params) click to toggle source
# File lib/cron_for_github/ping.rb, line 40
def clear(params)
  client = Client.new
  slug = decide_slug(params[:slug])
  cron_ref_prefix = decide_cron_ref_prefix(params[:namespace])

  cron_refs = client.refs(slug, cron_ref_prefix)
  cron_refs
    .each do |clear_ref|
      client.delete_ref(slug, clear_ref)
    end
end
decide_cron_ref(text, caller = nil) click to toggle source
# File lib/cron_for_github/ping.rb, line 36
def decide_cron_ref(text, caller = nil)
  "#{decide_cron_ref_prefix(text, caller)}#{SecureRandom.uuid}"
end
decide_cron_ref_prefix(text, caller = nil) click to toggle source
# File lib/cron_for_github/ping.rb, line 52
def decide_cron_ref_prefix(text, caller = nil)
  if caller != :ping && RESERVED_REFS.include?(text)
    fail ReservedNamespaceError, \
         %("#{text}" is reserved. List: #{RESERVED_REFS.join(', ')})
  end
  text = NAMESPACE if !text || text.empty?
  "heads/#{text}/"
end
decide_head_ref(text) click to toggle source
# File lib/cron_for_github/ping.rb, line 31
def decide_head_ref(text)
  text = BASE if !text || text.empty?
  "heads/#{text}"
end
decide_slug(text) click to toggle source
# File lib/cron_for_github/ping.rb, line 27
def decide_slug(text)
  text
end
logger() click to toggle source
# File lib/cron_for_github/ping.rb, line 61
def logger
  ::CronForGithub.logger
end
ping(params) click to toggle source
# File lib/cron_for_github/ping.rb, line 17
def ping(params)
  client = Client.new
  slug = decide_slug(params[:slug])
  head_ref = decide_head_ref(params[:base])
  cron_ref = decide_cron_ref(params[:namespace], __method__)

  latest_sha = client.latest_sha(slug, head_ref)
  client.create_ref(slug, cron_ref, latest_sha)
end