diff options
Diffstat (limited to 'lib/api/entities/runner_details.rb')
| -rw-r--r-- | lib/api/entities/runner_details.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/api/entities/runner_details.rb b/lib/api/entities/runner_details.rb new file mode 100644 index 00000000000..17202821e6e --- /dev/null +++ b/lib/api/entities/runner_details.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module API + module Entities + 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 + expose :token, if: lambda { |runner, options| options[:current_user].admin? || !runner.instance_type? } + # rubocop: disable CodeReuse/ActiveRecord + expose :projects, with: Entities::BasicProjectDetails do |runner, options| + if options[:current_user].admin? + 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? + runner.groups + else + options[:current_user].authorized_groups.where(id: runner.groups) + end + end + # rubocop: enable CodeReuse/ActiveRecord + end + end +end |
