debian-mirror-gitlab/config/routes/project.rb

467 lines
14 KiB
Ruby
Raw Normal View History

2017-08-17 22:00:37 +05:30
resources :projects, only: [:index, :new, :create]
draw :git_http
2018-05-09 12:01:36 +05:30
constraints(::Constraints::ProjectUrlConstrainer.new) do
2017-08-17 22:00:37 +05:30
# If the route has a wildcard segment, the segment has a regex constraint,
# the segment is potentially followed by _another_ wildcard segment, and
# the `format` option is not set to false, we need to specify that
# regex constraint _outside_ of `constraints: {}`.
#
# Otherwise, Rails will overwrite the constraint with `/.+?/`,
# which breaks some of our wildcard routes like `/blob/*id`
# and `/tree/*id` that depend on the negative lookahead inside
2017-09-10 17:25:29 +05:30
# `Gitlab::PathRegex.full_namespace_route_regex`, which helps the router
2017-08-17 22:00:37 +05:30
# determine whether a certain path segment is part of `*namespace_id`,
# `:project_id`, or `*id`.
#
# See https://github.com/rails/rails/blob/v4.2.8/actionpack/lib/action_dispatch/routing/mapper.rb#L155
scope(path: '*namespace_id',
as: :namespace,
2017-09-10 17:25:29 +05:30
namespace_id: Gitlab::PathRegex.full_namespace_route_regex) do
2017-08-17 22:00:37 +05:30
scope(path: ':project_id',
2017-09-10 17:25:29 +05:30
constraints: { project_id: Gitlab::PathRegex.project_route_regex },
2017-08-17 22:00:37 +05:30
module: :projects,
as: :project) do
resources :autocomplete_sources, only: [] do
collection do
get 'members'
get 'issues'
get 'merge_requests'
get 'labels'
get 'milestones'
get 'commands'
2018-12-05 23:21:45 +05:30
get 'snippets'
2016-11-03 12:29:30 +05:30
end
end
#
# Templates
#
2018-03-17 18:26:18 +05:30
get '/templates/:template_type/:key' => 'templates#show', as: :template, constraints: { key: %r{[^/]+} }
2016-11-03 12:29:30 +05:30
resource :avatar, only: [:show, :destroy]
resources :commit, only: [:show], constraints: { id: /\h{7,40}/ } do
member do
get :branches
get :pipelines
post :revert
post :cherry_pick
get :diff_for_path
2018-03-17 18:26:18 +05:30
get :merge_requests
2016-11-03 12:29:30 +05:30
end
end
2018-05-09 12:01:36 +05:30
resource :pages, only: [:show, :update, :destroy] do
2018-03-27 19:54:05 +05:30
resources :domains, except: :index, controller: 'pages_domains', constraints: { id: %r{[^/]+} } do
2018-03-17 18:26:18 +05:30
member do
post :verify
end
end
2016-11-03 12:29:30 +05:30
end
resources :snippets, concerns: :awardable, constraints: { id: /\d+/ } do
member do
2017-08-17 22:00:37 +05:30
get :raw
post :mark_as_spam
2016-11-03 12:29:30 +05:30
end
end
2018-03-27 19:54:05 +05:30
resources :services, constraints: { id: %r{[^/]+} }, only: [:edit, :update] do
2016-11-03 12:29:30 +05:30
member do
2017-09-10 17:25:29 +05:30
put :test
2016-11-03 12:29:30 +05:30
end
end
2017-08-17 22:00:37 +05:30
resource :mattermost, only: [:new, :create]
2017-09-10 17:25:29 +05:30
namespace :prometheus do
2018-03-27 19:54:05 +05:30
resources :metrics, constraints: { id: %r{[^\/]+} }, only: [] do
get :active_common, on: :collection
end
2017-09-10 17:25:29 +05:30
end
resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create, :edit, :update] do
2016-11-03 12:29:30 +05:30
member do
put :enable
put :disable
end
end
2018-05-09 12:01:36 +05:30
resources :deploy_tokens, constraints: { id: /\d+/ }, only: [] do
member do
put :revoke
end
end
2016-11-03 12:29:30 +05:30
resources :forks, only: [:index, :new, :create]
resource :import, only: [:new, :create, :show]
2017-09-10 17:25:29 +05:30
resources :merge_requests, concerns: :awardable, except: [:new, :create], constraints: { id: /\d+/ } do
2016-11-03 12:29:30 +05:30
member do
2017-08-17 22:00:37 +05:30
get :commit_change_content
2016-11-03 12:29:30 +05:30
post :merge
2017-08-17 22:00:37 +05:30
post :cancel_merge_when_pipeline_succeeds
get :pipeline_status
2016-11-03 12:29:30 +05:30
get :ci_environments_status
post :toggle_subscription
post :remove_wip
post :assign_related_issues
2018-03-27 19:54:05 +05:30
get :discussions, format: :json
2018-03-17 18:26:18 +05:30
post :rebase
2018-11-18 11:00:15 +05:30
get :test_reports
2017-09-10 17:25:29 +05:30
scope constraints: { format: nil }, action: :show do
get :commits, defaults: { tab: 'commits' }
get :pipelines, defaults: { tab: 'pipelines' }
get :diffs, defaults: { tab: 'diffs' }
end
scope constraints: { format: 'json' }, as: :json do
get :commits
get :pipelines
get :diffs, to: 'merge_requests/diffs#show'
end
get :diff_for_path, controller: 'merge_requests/diffs'
scope controller: 'merge_requests/conflicts' do
get :conflicts, action: :show
get :conflict_for_path
post :resolve_conflicts
end
2016-11-03 12:29:30 +05:30
end
collection do
get :diff_for_path
post :bulk_update
end
2018-05-09 12:01:36 +05:30
resources :discussions, only: [:show], constraints: { id: /\h{40}/ } do
2016-11-03 12:29:30 +05:30
member do
post :resolve
delete :resolve, action: :unresolve
end
end
end
2018-12-05 23:21:45 +05:30
scope path: 'merge_requests', controller: 'merge_requests/creations' do
2017-09-10 17:25:29 +05:30
post '', action: :create, as: nil
scope path: 'new', as: :new_merge_request do
get '', action: :new
scope constraints: { format: nil }, action: :new do
get :diffs, defaults: { tab: 'diffs' }
get :pipelines, defaults: { tab: 'pipelines' }
end
scope constraints: { format: 'json' }, as: :json do
get :diffs
get :pipelines
end
get :diff_for_path
get :branch_from
get :branch_to
end
end
2018-03-17 18:26:18 +05:30
resource :variables, only: [:show, :update]
2017-08-17 22:00:37 +05:30
resources :triggers, only: [:index, :create, :edit, :update, :destroy] do
member do
post :take_ownership
end
end
2016-11-03 12:29:30 +05:30
2018-10-15 14:42:47 +05:30
resource :mirror, only: [:show, :update] do
member do
2018-12-13 13:39:08 +05:30
get :ssh_host_keys, constraints: { format: :json }
2018-10-15 14:42:47 +05:30
post :update_now
end
end
2016-11-03 12:29:30 +05:30
resources :pipelines, only: [:index, :new, :create, :show] do
collection do
resource :pipelines_settings, path: 'settings', only: [:show, :update]
2017-08-17 22:00:37 +05:30
get :charts
2016-11-03 12:29:30 +05:30
end
member do
2017-08-17 22:00:37 +05:30
get :stage
2018-10-15 14:42:47 +05:30
get :stage_ajax
2016-11-03 12:29:30 +05:30
post :cancel
post :retry
2017-08-17 22:00:37 +05:30
get :builds
get :failures
get :status
end
end
resources :pipeline_schedules, except: [:show] do
member do
2018-03-17 18:26:18 +05:30
post :play
2017-08-17 22:00:37 +05:30
post :take_ownership
2016-11-03 12:29:30 +05:30
end
end
2018-12-13 13:39:08 +05:30
concerns :clusterable
2018-03-17 18:26:18 +05:30
2016-11-03 12:29:30 +05:30
resources :environments, except: [:destroy] do
member do
post :stop
2017-08-17 22:00:37 +05:30
get :terminal
get :metrics
2017-09-10 17:25:29 +05:30
get :additional_metrics
2017-08-17 22:00:37 +05:30
get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', constraints: { format: nil }
end
collection do
2018-11-08 19:23:39 +05:30
get :metrics, action: :metrics_redirect
2017-08-17 22:00:37 +05:30
get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ }
end
resources :deployments, only: [:index] do
member do
get :metrics
2017-09-10 17:25:29 +05:30
get :additional_metrics
2017-08-17 22:00:37 +05:30
end
2016-11-03 12:29:30 +05:30
end
end
resource :cycle_analytics, only: [:show]
2017-08-17 22:00:37 +05:30
namespace :cycle_analytics do
scope :events, controller: 'events' do
get :issue
get :plan
get :code
get :test
get :review
get :staging
get :production
end
end
2017-09-10 17:25:29 +05:30
scope '-' do
2018-05-09 12:01:36 +05:30
get 'archive/*id', constraints: { format: Gitlab::PathRegex.archive_formats_regex, id: /.+?/ }, to: 'repositories#archive', as: 'archive'
2017-09-10 17:25:29 +05:30
resources :jobs, only: [:index, :show], constraints: { id: /\d+/ } do
collection do
post :cancel_all
resources :artifacts, only: [] do
collection do
get :latest_succeeded,
path: '*ref_name_and_path',
format: false
end
2016-11-03 12:29:30 +05:30
end
end
2017-09-10 17:25:29 +05:30
member do
get :status
post :cancel
2018-12-05 23:21:45 +05:30
post :unschedule
2017-09-10 17:25:29 +05:30
post :retry
post :play
post :erase
get :trace, defaults: { format: 'json' }
get :raw
2018-11-08 19:23:39 +05:30
get :terminal
get '/terminal.ws/authorize', to: 'jobs#terminal_websocket_authorize', constraints: { format: nil }
2017-09-10 17:25:29 +05:30
end
2016-11-03 12:29:30 +05:30
2017-09-10 17:25:29 +05:30
resource :artifacts, only: [] do
get :download
get :browse, path: 'browse(/*path)', format: false
get :file, path: 'file/*path', format: false
get :raw, path: 'raw/*path', format: false
post :keep
end
2016-11-03 12:29:30 +05:30
end
2018-05-09 12:01:36 +05:30
namespace :ci do
resource :lint, only: [:show, :create]
end
2016-11-03 12:29:30 +05:30
end
2017-09-10 17:25:29 +05:30
draw :legacy_builds
2017-08-17 22:00:37 +05:30
resources :hooks, only: [:index, :create, :edit, :update, :destroy], constraints: { id: /\d+/ } do
2016-11-03 12:29:30 +05:30
member do
2018-10-15 14:42:47 +05:30
post :test
2016-11-03 12:29:30 +05:30
end
2017-09-10 17:25:29 +05:30
resources :hook_logs, only: [:show] do
member do
2018-11-08 19:23:39 +05:30
post :retry
2017-09-10 17:25:29 +05:30
end
end
2016-11-03 12:29:30 +05:30
end
2017-08-17 22:00:37 +05:30
resources :container_registry, only: [:index, :destroy],
controller: 'registry/repositories'
namespace :registry do
resources :repository, only: [] do
2018-03-17 18:26:18 +05:30
# We default to JSON format in the controller to avoid ambiguity.
# `latest.json` could either be a request for a tag named `latest`
# in JSON format, or a request for tag named `latest.json`.
scope format: false do
resources :tags, only: [:index, :destroy],
constraints: { id: Gitlab::Regex.container_registry_tag_regex }
end
2017-08-17 22:00:37 +05:30
end
end
2016-11-03 12:29:30 +05:30
resources :milestones, constraints: { id: /\d+/ } do
member do
2018-03-17 18:26:18 +05:30
post :promote
2016-11-03 12:29:30 +05:30
put :sort_issues
put :sort_merge_requests
2017-08-17 22:00:37 +05:30
get :merge_requests
get :participants
get :labels
2016-11-03 12:29:30 +05:30
end
end
resources :labels, except: [:show], constraints: { id: /\d+/ } do
collection do
post :generate
post :set_priorities
end
member do
2017-08-17 22:00:37 +05:30
post :promote
2016-11-03 12:29:30 +05:30
post :toggle_subscription
delete :remove_priority
end
end
2018-11-08 19:23:39 +05:30
get :issues, to: 'issues#calendar', constraints: lambda { |req| req.format == :ics }
2016-11-03 12:29:30 +05:30
resources :issues, concerns: :awardable, constraints: { id: /\d+/ } do
member do
post :toggle_subscription
post :mark_as_spam
2018-03-17 18:26:18 +05:30
post :move
2016-11-03 12:29:30 +05:30
get :referenced_merge_requests
get :related_branches
get :can_create_branch
2017-09-10 17:25:29 +05:30
get :realtime_changes
2017-08-17 22:00:37 +05:30
post :create_merge_request
2018-03-17 18:26:18 +05:30
get :discussions, format: :json
2016-11-03 12:29:30 +05:30
end
collection do
2018-12-05 23:21:45 +05:30
post :bulk_update
2016-11-03 12:29:30 +05:30
end
end
2018-03-17 18:26:18 +05:30
resources :project_members, except: [:show, :new, :edit], constraints: { id: %r{[a-zA-Z./0-9_\-#%+]+} }, concerns: :access_requestable do
2016-11-03 12:29:30 +05:30
collection do
delete :leave
# Used for import team
# from another project
get :import
post :apply_import
end
member do
post :resend_invite
end
end
resources :group_links, only: [:index, :create, :update, :destroy], constraints: { id: /\d+/ }
2017-08-17 22:00:37 +05:30
resources :notes, only: [:create, :destroy, :update], concerns: :awardable, constraints: { id: /\d+/ } do
2016-11-03 12:29:30 +05:30
member do
delete :delete_attachment
post :resolve
delete :resolve, action: :unresolve
end
end
2017-08-17 22:00:37 +05:30
get 'noteable/:target_type/:target_id/notes' => 'notes#index', as: 'noteable_notes'
2018-03-27 19:54:05 +05:30
# On CE only index and show are needed
resources :boards, only: [:index, :show]
2016-11-03 12:29:30 +05:30
resources :todos, only: [:create]
resources :uploads, only: [:create] do
collection do
2018-03-17 18:26:18 +05:30
get ":secret/:filename", action: :show, as: :show, constraints: { filename: %r{[^/]+} }
2018-11-08 19:23:39 +05:30
post :authorize
2016-11-03 12:29:30 +05:30
end
end
resources :runners, only: [:index, :edit, :update, :destroy, :show] do
member do
2018-03-17 18:26:18 +05:30
post :resume
post :pause
2016-11-03 12:29:30 +05:30
end
collection do
post :toggle_shared_runners
2018-10-15 14:42:47 +05:30
post :toggle_group_runners
2016-11-03 12:29:30 +05:30
end
end
resources :runner_projects, only: [:create, :destroy]
resources :badges, only: [:index] do
collection do
2017-09-10 17:25:29 +05:30
scope '*ref', constraints: { ref: Gitlab::PathRegex.git_reference_regex } do
2016-11-03 12:29:30 +05:30
constraints format: /svg/ do
2017-09-10 17:25:29 +05:30
# Keep around until 10.0, see gitlab-org/gitlab-ce#35307
get :build, to: "badges#pipeline"
get :pipeline
2016-11-03 12:29:30 +05:30
get :coverage
end
end
end
end
2017-08-17 22:00:37 +05:30
namespace :settings do
2018-03-17 18:26:18 +05:30
get :members, to: redirect("%{namespace_id}/%{project_id}/project_members")
2018-05-09 12:01:36 +05:30
resource :ci_cd, only: [:show, :update], controller: 'ci_cd' do
2018-03-17 18:26:18 +05:30
post :reset_cache
2018-12-05 23:21:45 +05:30
put :reset_registration_token
2018-03-17 18:26:18 +05:30
end
2017-08-17 22:00:37 +05:30
resource :integrations, only: [:show]
2018-05-09 12:01:36 +05:30
resource :repository, only: [:show], controller: :repository do
post :create_deploy_token, path: 'deploy_token/create'
end
2017-08-17 22:00:37 +05:30
end
# Since both wiki and repository routing contains wildcard characters
# its preferable to keep it below all other project routes
draw :wiki
draw :repository
end
resources(:projects,
path: '/',
2017-09-10 17:25:29 +05:30
constraints: { id: Gitlab::PathRegex.project_route_regex },
2017-08-17 22:00:37 +05:30
only: [:edit, :show, :update, :destroy]) do
member do
put :transfer
delete :remove_fork
post :archive
post :unarchive
post :housekeeping
post :toggle_star
post :preview_markdown
post :export
post :remove_export
post :generate_new_export
get :download_export
get :activity
get :refs
2018-03-17 18:26:18 +05:30
put :new_issuable_address
2017-08-17 22:00:37 +05:30
end
2016-11-03 12:29:30 +05:30
end
end
end