module Sidekiq::Undertaker::WebExtension::APIHelpers

Public Instance Methods

bad_request() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 118
def bad_request
  [400, { "Content-Type" => "text/plain" }, ["Bad Request"]]
end
post_undertaker() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 59
def post_undertaker
  raise ::ArgumentError.new("Key missing") unless params["key"]

  params["key"].each do |key|
    job = Sidekiq::DeadSet.new.fetch(*parse_params(key)).first
    if job
      if params["retry"]
        job.retry
      elsif params["delete"]
        job.delete
      end
    end
  end

  redirect redirect_path(request)
rescue ::ArgumentError
  bad_request
end
post_undertaker_job_class_error_class_buckent_name_delete() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 78
def post_undertaker_job_class_error_class_buckent_name_delete
  store_request_params
  @dead_jobs = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
  @dead_jobs.each do |dead_job|
    dead_job.job.delete
  end

  redirect redirect_path(request)
end
post_undertaker_job_class_error_class_buckent_name_retry() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 88
def post_undertaker_job_class_error_class_buckent_name_retry
  store_request_params

  @dead_jobs = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
  @dead_jobs.each do |dead_job|
    dead_job.job.retry
  end

  redirect redirect_path(request)
end
redirect_path(request) click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 113
def redirect_path(request)
  path = request.referer ? URI.parse(request.referer).path : request.path
  path.gsub("/delete", "").gsub("/retry", "")
end
render_result(template) click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 99
def render_result(template)
  render(:erb, File.read(File.join(view_path, template)))
end
show_filter() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 10
def show_filter
  store_request_params

  @dead_jobs    = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
  @distribution = Sidekiq::Undertaker::JobDistributor.new(@dead_jobs).group_by_job_class
  @total_dead   = @dead_jobs.size

  render_result("filter.erb")
end
show_filter_by_job_class_bucket_name() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 20
def show_filter_by_job_class_bucket_name
  store_request_params

  @dead_jobs    = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
  @distribution = Sidekiq::Undertaker::JobDistributor.new(@dead_jobs).group_by_error_class
  @total_dead   = @dead_jobs.size

  render_result("filter_job_class.erb")
end
show_undertaker_by_job_class_error_class_bucket_name() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 30
def show_undertaker_by_job_class_error_class_bucket_name
  store_request_params

  @dead_jobs = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)

  # Display dead jobs as list
  @dead_jobs = @dead_jobs.map(&:job)

  @undertaker_path = "undertaker/morgue/#{@req_job_class}/#{@req_error_class}/#{@req_bucket_name}"

  # Pagination
  @total_dead   = @dead_jobs.size
  @current_page = (params[:page] || 1).to_i
  @count        = 50 # per page
  @dead_jobs    = @dead_jobs[((@current_page - 1) * @count), @count]

  # HINT: For making the pagination from sidekiq work, @total_size needs to be set
  #       https://github.com/mperham/sidekiq/blob/master/web/views/_paging.erb#L1
  @total_size = @total_dead

  # Remove unrelated arguments to allow _paginate url to be clean
  # Hack to continue to reuse sidekiq's _pagination template
  params.delete("job_class")
  params.delete("bucket_name")
  params.delete("error_class")

  render_result("morgue.erb")
end
store_request_params() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 103
def store_request_params
  @req_job_class   = params["job_class"]
  @req_bucket_name = params["bucket_name"]
  @req_error_class = params["error_class"]
end
view_path() click to toggle source
# File lib/sidekiq/undertaker/web_extension/api_helpers.rb, line 109
def view_path
  File.join(File.expand_path(__dir__), "../../../../web/views")
end