gitlab-org--gitlab-foss/app/controllers/projects/build_artifacts_controller.rb

62 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2017-05-23 13:20:59 +00:00
class Projects::BuildArtifactsController < Projects::ApplicationController
include ExtractsPath
include RendersBlob
before_action :authorize_read_build!
2017-05-23 13:20:59 +00:00
before_action :extract_ref_name_and_path
before_action :validate_artifacts!
2017-05-23 13:20:59 +00:00
def download
redirect_to download_project_job_artifacts_path(project, job)
2017-05-23 13:20:59 +00:00
end
def browse
redirect_to browse_project_job_artifacts_path(project, job, path: params[:path])
2017-05-23 13:20:59 +00:00
end
def file
redirect_to file_project_job_artifacts_path(project, job, path: params[:path])
2017-05-23 13:20:59 +00:00
end
def raw
redirect_to raw_project_job_artifacts_path(project, job, path: params[:path])
2017-05-23 13:20:59 +00:00
end
def latest_succeeded
redirect_to latest_succeeded_project_artifacts_path(project, job, ref_name_and_path: params[:ref_name_and_path], job: params[:job])
2017-05-23 13:20:59 +00:00
end
private
def validate_artifacts!
render_404 unless job && job.artifacts?
end
2017-05-23 13:20:59 +00:00
def extract_ref_name_and_path
return unless params[:ref_name_and_path]
@ref_name, @path = extract_ref(params[:ref_name_and_path])
end
def job
@job ||= job_from_id || job_from_ref
end
# rubocop: disable CodeReuse/ActiveRecord
2017-05-23 13:20:59 +00:00
def job_from_id
project.builds.find_by(id: params[:build_id]) if params[:build_id]
end
# rubocop: enable CodeReuse/ActiveRecord
2017-05-23 13:20:59 +00:00
# rubocop: disable CodeReuse/ActiveRecord
2017-05-23 13:20:59 +00:00
def job_from_ref
return unless @ref_name
jobs = project.latest_successful_builds_for(@ref_name)
jobs.find_by(name: params[:job])
end
# rubocop: enable CodeReuse/ActiveRecord
2017-05-23 13:20:59 +00:00
end