Welcome to mirror list, hosted at ThFree Co, Russian Federation.

service_index_presenter.rb « v2 « nuget « packages « presenters « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a8fc9b673bfa78b3a7ca45db420b11cfddb5f920 (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
37
38
39
40
41
42
43
44
45
46
47
48
# frozen_string_literal: true

module Packages
  module Nuget
    module V2
      class ServiceIndexPresenter
        include API::Helpers::RelatedResourcesHelpers

        ROOT_ATTRIBUTES = {
          xmlns: 'http://www.w3.org/2007/app',
          'xmlns:atom' => 'http://www.w3.org/2005/Atom'
        }.freeze

        def initialize(project_or_group)
          @project_or_group = project_or_group
        end

        def xml
          Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
            xml.service(ROOT_ATTRIBUTES.merge('xml:base' => xml_base)) do
              xml.workspace do
                xml['atom'].title('Default', type: 'text')
                xml.collection(href: 'Packages') do
                  xml['atom'].title('Packages', type: 'text')
                end
              end
            end
          end
        end

        private

        attr_reader :project_or_group

        def xml_base
          base_path = case project_or_group
                      when Project
                        api_v4_projects_packages_nuget_v2_path(id: project_or_group.id)
                      when Group
                        api_v4_groups___packages_nuget_v2_path(id: project_or_group.id)
                      end

          expose_url(base_path)
        end
      end
    end
  end
end