summaryrefslogtreecommitdiff
path: root/app/models/web_ide_terminal.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-25 15:07:58 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-25 15:07:58 +0000
commit0d8e625e4cd499162e6113dca4988b28f9faa9b6 (patch)
tree8744ab9fdba76e924f15272bba473521e39b8760 /app/models/web_ide_terminal.rb
parentb5249f2d99206a72459bc5e2bf2aeb2f06ee36f3 (diff)
downloadgitlab-ce-0d8e625e4cd499162e6113dca4988b28f9faa9b6.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/web_ide_terminal.rb')
-rw-r--r--app/models/web_ide_terminal.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/app/models/web_ide_terminal.rb b/app/models/web_ide_terminal.rb
new file mode 100644
index 00000000000..ef70df2405f
--- /dev/null
+++ b/app/models/web_ide_terminal.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+class WebIdeTerminal
+ include ::Gitlab::Routing
+
+ attr_reader :build, :project
+
+ delegate :id, :status, to: :build
+
+ def initialize(build)
+ @build = build
+ @project = build.project
+ end
+
+ def show_path
+ web_ide_terminal_route_generator(:show)
+ end
+
+ def retry_path
+ web_ide_terminal_route_generator(:retry)
+ end
+
+ def cancel_path
+ web_ide_terminal_route_generator(:cancel)
+ end
+
+ def terminal_path
+ terminal_project_job_path(project, build, format: :ws)
+ end
+
+ def proxy_websocket_path
+ proxy_project_job_path(project, build, format: :ws)
+ end
+
+ def services
+ build.services.map(&:alias).compact + Array(build.image&.alias)
+ end
+
+ private
+
+ def web_ide_terminal_route_generator(action, options = {})
+ options.reverse_merge!(action: action,
+ controller: 'projects/web_ide_terminals',
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ id: build.id,
+ only_path: true)
+
+ url_for(options)
+ end
+end