diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-05-23 16:20:59 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-05-23 16:20:59 +0300 |
commit | 43981250c426595c9b3c03a5153ae05d3de2a8e2 (patch) | |
tree | 586f0656915e21d5c73239cfec7e5ac582856326 /app/controllers/projects/build_artifacts_controller.rb | |
parent | 876acc7e0d654ebc89df3c596cc504334a37f7d8 (diff) |
Use controllers to redirect
Diffstat (limited to 'app/controllers/projects/build_artifacts_controller.rb')
-rw-r--r-- | app/controllers/projects/build_artifacts_controller.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/app/controllers/projects/build_artifacts_controller.rb b/app/controllers/projects/build_artifacts_controller.rb new file mode 100644 index 00000000000..873246f484e --- /dev/null +++ b/app/controllers/projects/build_artifacts_controller.rb @@ -0,0 +1,49 @@ +class Projects::BuildArtifactsController < Projects::ApplicationController + include ExtractsPath + include RendersBlob + + before_action :extract_ref_name_and_path + + def download + redirect_to download_namespace_project_job_artifacts_path(project.namespace, project, job) + end + + def browse + redirect_to browse_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path]) + end + + def file + redirect_to file_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path]) + end + + def raw + redirect_to raw_namespace_project_job_artifacts_path(project.namespace, project, job, path: params[:path]) + end + + def latest_succeeded + redirect_to latest_succeeded_namespace_project_artifacts_path(project.namespace, project, job, ref_name_and_path: params[:ref_name_and_path], job: params[:job]) + end + + private + + 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 + + def job_from_id + project.builds.find_by(id: params[:build_id]) if params[:build_id] + end + + def job_from_ref + return unless @ref_name + + jobs = project.latest_successful_builds_for(@ref_name) + jobs.find_by(name: params[:job]) + end +end |