summaryrefslogtreecommitdiff
path: root/lib/api/entities/ci/runner_details.rb
blob: 9d44da7e5b3dc95157da582bd2d3d688991b0aea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# frozen_string_literal: true

module API
  module Entities
    module Ci
      class RunnerDetails < Runner
        expose :tag_list
        expose :run_untagged
        expose :locked
        expose :maximum_timeout
        expose :access_level
        expose :version, :revision, :platform, :architecture
        expose :contacted_at

        # rubocop: disable CodeReuse/ActiveRecord
        expose :projects, with: Entities::BasicProjectDetails do |runner, options|
          if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
            runner.projects
          else
            options[:current_user].authorized_projects.where(id: runner.projects)
          end
        end
        # rubocop: enable CodeReuse/ActiveRecord
        # rubocop: disable CodeReuse/ActiveRecord
        expose :groups, with: Entities::BasicGroupDetails do |runner, options|
          if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
            runner.groups
          else
            options[:current_user].authorized_groups.where(id: runner.groups)
          end
        end
        # rubocop: enable CodeReuse/ActiveRecord
      end
    end
  end
end