diff options
Diffstat (limited to 'app/graphql/types/ci/runner_web_url_edge.rb')
-rw-r--r-- | app/graphql/types/ci/runner_web_url_edge.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/graphql/types/ci/runner_web_url_edge.rb b/app/graphql/types/ci/runner_web_url_edge.rb new file mode 100644 index 00000000000..3b9fdfd1571 --- /dev/null +++ b/app/graphql/types/ci/runner_web_url_edge.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Types + module Ci + # rubocop: disable Graphql/AuthorizeTypes + class RunnerWebUrlEdge < GraphQL::Types::Relay::BaseEdge + include FindClosest + + field :web_url, GraphQL::Types::String, null: true, + description: 'Web URL of the runner. The value depends on where you put this field in the query. You can use it for projects or groups.', + extras: [:parent] + + def initialize(node, connection) + super + + @runner = node.node + end + + def web_url(parent:) + owner = closest_parent([::Types::ProjectType, ::Types::GroupType], parent) + + case owner + when ::Group + Gitlab::Routing.url_helpers.group_runner_url(owner, @runner) + when ::Project + Gitlab::Routing.url_helpers.project_runner_url(owner, @runner) + end + end + end + end +end |