gitlab-org--gitlab-foss/config/routes.rb

931 lines
26 KiB
Ruby
Raw Normal View History

2013-01-09 00:14:05 -05:00
require 'sidekiq/web'
require 'sidekiq/cron/web'
require 'api/api'
2013-01-09 00:14:05 -05:00
2015-11-25 11:18:44 -05:00
Rails.application.routes.draw do
if Gitlab::Sherlock.enabled?
namespace :sherlock do
resources :transactions, only: [:index, :show] do
resources :queries, only: [:show]
resources :file_samples, only: [:show]
collection do
delete :destroy_all
end
end
end
end
if Rails.env.development?
# Make the built-in Rails routes available in development, otherwise they'd
# get swallowed by the `namespace/project` route matcher below.
#
# See https://git.io/va79N
get '/rails/mailers' => 'rails/mailers#index'
get '/rails/mailers/:path' => 'rails/mailers#preview'
get '/rails/info/properties' => 'rails/info#properties'
get '/rails/info/routes' => 'rails/info#routes'
get '/rails/info' => 'rails/info#index'
mount LetterOpenerWeb::Engine, at: '/rails/letter_opener'
end
concern :access_requestable do
post :request_access, on: :collection
post :approve_access_request, on: :member
end
2015-08-25 21:42:46 -04:00
namespace :ci do
# CI API
Ci::API::API.logger Rails.logger
mount Ci::API::API => '/api'
resource :lint, only: [:show, :create]
2016-05-03 18:32:14 -04:00
resources :projects, only: [:index, :show] do
2015-08-25 21:42:46 -04:00
member do
get :status, to: 'projects#badge'
end
end
root to: 'projects#index'
end
2014-12-19 09:15:29 -05:00
use_doorkeeper do
2015-02-02 22:30:09 -05:00
controllers applications: 'oauth/applications',
authorized_applications: 'oauth/authorized_applications',
authorizations: 'oauth/authorizations'
2014-12-19 09:15:29 -05:00
end
2015-03-08 17:46:22 -04:00
2015-03-26 22:06:19 -04:00
# Autocomplete
get '/autocomplete/users' => 'autocomplete#users'
get '/autocomplete/users/:id' => 'autocomplete#user'
get '/autocomplete/projects' => 'autocomplete#projects'
2015-03-26 22:06:19 -04:00
2016-02-22 21:16:00 -05:00
# Emojis
resources :emojis, only: :index
2015-03-26 22:06:19 -04:00
# Search
get 'search' => 'search#show'
get 'search/autocomplete' => 'search#autocomplete', as: :search_autocomplete
2012-02-19 09:35:31 -05:00
2016-05-02 07:29:17 -04:00
# JSON Web Token
get 'jwt/auth' => 'jwt#auth'
2012-06-27 05:26:16 -04:00
# API
API::API.logger Rails.logger
mount API::API => '/api'
2012-06-27 05:26:16 -04:00
constraint = lambda { |request| request.env['warden'].authenticate? and request.env['warden'].user.admin? }
2013-01-09 00:14:05 -05:00
constraints constraint do
mount Sidekiq::Web, at: '/admin/sidekiq', as: :sidekiq
2013-01-09 00:14:05 -05:00
end
# Health check
2016-05-13 03:51:13 -04:00
get 'health_check(/:checks)' => 'health_check#index', as: :health_check
# Help
get 'help' => 'help#index'
get 'help/shortcuts' => 'help#shortcuts'
get 'help/ui' => 'help#ui'
get 'help/*path' => 'help#show', as: :help_page
Support integration with Koding (online IDE) Koding: #index: landing page for Koding integration If enabled it will provide a link to open remote Koding instance url for now we are also providing the sneak preview video for how integration works in detail. Repository: check whether .koding.yml file exists on repository Projects: landing page: show Run in IDE (Koding) button if repo has stack file Projects: MR: show Run in IDE Koding button if repo has stack file on active branch ProjectHelpers: add_koding_stack: stack generator for provided project With this helper we will auto-generate the required stack template for a given project. For the feature we can request this base template from the running Koding instance on integration. Currently this will provide users to create a t2.nano instance on aws and it'll automatically configures the instance for basic requirements. Projects: empty state and landing page provide shortcuts to create stack projects_helper: use branch on checkout and provide an entry point This ${var.koding_queryString_branch} will be replaced with the branch provided in query string which will allow us to use same stack template for different branches of the same repository. ref: https://github.com/koding/koding/pull/8597/commits/b8c0e43c4c24bf132670aa8a3cfb0d634acfd09b projects_helper: provide sha info in query string to use existing vms With this change we'll be able to query existing vms on Koding side based on the commit id that they've created. ref: https://github.com/koding/koding/pull/8597/commits/1d630fadf31963fa6ccd3bed92e526761a30a343 Integration: Docs: Koding documentation added Disable /koding route if integration is disabled Use application settings to enable Koding Projects_helper: better indentation with strip_heredoc usage Projects_helper: return koding_url as is if there is no project provided current_settings: set koding_enabled: false by default Koding_Controller: to render not_found once integration is disabled Dashboard_specs: update spec for Koding enabled case Projects_Helper: make repo dynamic ref: https://github.com/koding/koding/pull/8597/commits/4d615242f45aaea4c4986be84ecc612b0bb1514c Updated documentation to have right format
2016-07-25 23:59:39 -04:00
#
# Koding route
#
get 'koding' => 'koding#index'
2013-03-24 18:17:20 -04:00
#
# Global snippets
#
resources :snippets do
member do
get 'raw'
2013-03-24 18:17:20 -04:00
end
end
2016-05-08 04:29:51 -04:00
get '/s/:username', to: redirect('/u/%{username}/snippets'),
2016-05-08 04:27:33 -04:00
constraints: { username: /[a-zA-Z.0-9_\-]+(?<!\.atom)/ }
2013-03-24 18:17:20 -04:00
2015-04-10 09:22:31 -04:00
#
# Invites
#
resources :invites, only: [:show], constraints: { id: /[A-Za-z0-9_-]+/ } do
member do
post :accept
2015-04-10 10:37:02 -04:00
match :decline, via: [:get, :post]
2015-04-10 09:22:31 -04:00
end
end
2015-02-11 20:34:41 -05:00
resources :sent_notifications, only: [], constraints: { id: /\h{32}/ } do
member do
get :unsubscribe
end
end
#
# Spam reports
#
resources :abuse_reports, only: [:new, :create]
#
# Notification settings
#
resources :notification_settings, only: [:create, :update]
2014-12-31 08:07:48 -05:00
#
2015-02-02 20:01:07 -05:00
# Import
2014-12-31 08:07:48 -05:00
#
2015-02-02 20:01:07 -05:00
namespace :import do
resource :github, only: [:create, :new], controller: :github do
post :personal_access_token
2015-01-27 18:37:19 -05:00
get :status
get :callback
get :jobs
end
2016-05-03 18:32:14 -04:00
resource :gitlab, only: [:create], controller: :gitlab do
2015-01-27 18:37:19 -05:00
get :status
get :callback
get :jobs
end
2015-02-20 12:38:41 -05:00
2016-05-03 18:32:14 -04:00
resource :bitbucket, only: [:create], controller: :bitbucket do
2015-02-17 10:59:50 -05:00
get :status
get :callback
get :jobs
end
2015-03-08 17:46:22 -04:00
2015-02-20 12:38:41 -05:00
resource :gitorious, only: [:create, :new], controller: :gitorious do
get :status
get :callback
get :jobs
end
resource :google_code, only: [:create, :new], controller: :google_code do
get :status
post :callback
get :jobs
2015-04-14 08:50:56 -04:00
get :new_user_map, path: :user_map
post :create_user_map, path: :user_map
end
2015-08-04 18:21:12 -04:00
resource :fogbugz, only: [:create, :new], controller: :fogbugz do
get :status
post :callback
get :jobs
get :new_user_map, path: :user_map
post :create_user_map, path: :user_map
end
2016-04-25 12:00:15 -04:00
2016-05-17 03:39:34 -04:00
resource :gitlab_project, only: [:create, :new] do
post :create
2016-04-25 12:00:15 -04:00
end
2014-12-31 08:07:48 -05:00
end
2015-02-11 20:34:41 -05:00
#
# Uploads
#
2015-02-11 20:34:41 -05:00
scope path: :uploads do
# Note attachments and User/Group/Project avatars
2015-02-23 18:18:45 -05:00
get ":model/:mounted_as/:id/:filename",
to: "uploads#show",
constraints: { model: /note|user|group|project/, mounted_as: /avatar|attachment/, filename: /[^\/]+/ }
# Appearance
get ":model/:mounted_as/:id/:filename",
to: "uploads#show",
constraints: { model: /appearance/, mounted_as: /logo|header_logo/, filename: /.+/ }
# Project markdown uploads
get ":namespace_id/:project_id/:secret/:filename",
to: "projects/uploads#show",
constraints: { namespace_id: /[a-zA-Z.0-9_\-]+/, project_id: /[a-zA-Z.0-9_\-]+/, filename: /[^\/]+/ }
end
2014-12-31 08:07:48 -05:00
# Redirect old note attachments path to new uploads path.
get "files/note/:id/:filename",
to: redirect("uploads/note/attachment/%{id}/%{filename}"),
constraints: { filename: /[^\/]+/ }
2013-01-10 13:17:57 -05:00
#
2015-01-24 14:25:16 -05:00
# Explore area
2013-01-10 13:17:57 -05:00
#
namespace :explore do
resources :projects, only: [:index] do
collection do
get :trending
get :starred
end
end
resources :groups, only: [:index]
resources :snippets, only: [:index]
root to: 'projects#trending'
2013-01-10 13:17:57 -05:00
end
# Compatibility with old routing
get 'public' => 'explore/projects#index'
get 'public/projects' => 'explore/projects#index'
#
# Admin Area
#
namespace :admin do
2013-01-26 05:08:34 -05:00
resources :users, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do
resources :keys, only: [:show, :destroy]
resources :identities, except: [:show]
member do
get :projects
get :keys
get :groups
put :block
put :unblock
put :unlock
put :confirm
2016-04-22 17:19:55 -04:00
post :impersonate
patch :disable_two_factor
delete 'remove/:email_id', action: 'remove_email', as: 'remove_email'
2012-02-11 12:56:18 -05:00
end
end
2013-01-22 16:03:52 -05:00
2016-04-22 17:19:55 -04:00
resource :impersonation, only: :destroy
resources :abuse_reports, only: [:index, :destroy]
resources :spam_logs, only: [:index, :destroy] do
member do
post :mark_as_ham
end
end
2015-01-17 18:37:27 -05:00
resources :applications
resources :groups, constraints: { id: /[^\/]+/ } do
member do
put :members_update
end
2013-01-19 12:11:11 -05:00
end
2013-01-22 16:03:52 -05:00
resources :deploy_keys, only: [:index, :new, :create, :destroy]
resources :hooks, only: [:index, :create, :destroy] do
2012-07-12 15:10:34 -04:00
get :test
end
2013-01-22 16:03:52 -05:00
resources :broadcast_messages, only: [:index, :edit, :create, :update, :destroy] do
post :preview, on: :collection
end
resource :logs, only: [:show]
resource :health_check, controller: 'health_check', only: [:show]
resource :background_jobs, controller: 'background_jobs', only: [:show]
resource :system_info, controller: 'system_info', only: [:show]
resources :requests_profiles, only: [:index, :show], param: :name, constraints: { name: /.+\.html/ }
resources :namespaces, path: '/projects', constraints: { id: /[a-zA-Z.0-9_\-]+/ }, only: [] do
root to: 'projects#index', as: :projects
2015-02-23 18:18:45 -05:00
resources(:projects,
path: '/',
constraints: { id: /[a-zA-Z.0-9_\-]+/ },
only: [:index, :show]) do
root to: 'projects#show'
member do
put :transfer
2016-04-06 07:47:05 -04:00
post :repository_check
end
2015-12-04 06:55:23 -05:00
resources :runner_projects, only: [:create, :destroy]
end
end
2016-05-03 18:32:14 -04:00
resource :appearances, only: [:show, :create, :update], path: 'appearance' do
member do
get :preview
delete :logo
delete :header_logos
end
end
2015-02-11 20:34:41 -05:00
resource :application_settings, only: [:show, :update] do
2016-05-03 18:32:14 -04:00
resources :services, only: [:index, :edit, :update]
put :reset_runners_token
put :reset_health_check_token
put :clear_repository_check_states
2015-02-11 20:34:41 -05:00
end
2015-09-03 08:50:23 -04:00
resources :labels
2015-12-04 06:55:23 -05:00
resources :runners, only: [:index, :show, :update, :destroy] do
member do
get :resume
get :pause
end
end
resources :builds, only: :index do
collection do
post :cancel_all
end
end
root to: 'dashboard#index'
2011-10-08 17:36:38 -04:00
end
#
# Profile Area
#
resource :profile, only: [:show, :update] do
member do
2015-07-03 07:54:50 -04:00
get :audit_log
get :applications, to: 'oauth/applications#index'
put :reset_private_token
put :update_username
end
2013-03-27 13:04:29 -04:00
scope module: :profiles do
2016-05-03 18:32:14 -04:00
resource :account, only: [:show] do
member do
delete :unlink
end
end
resource :notifications, only: [:show, :update]
resource :password, only: [:new, :create, :edit, :update] do
member do
put :reset
end
end
2015-06-05 14:00:21 -04:00
resource :preferences, only: [:show, :update]
2016-05-03 18:32:14 -04:00
resources :keys, only: [:index, :show, :new, :create, :destroy]
resources :emails, only: [:index, :create, :destroy]
resource :avatar, only: [:destroy]
2016-04-15 11:24:20 -04:00
resources :personal_access_tokens, only: [:index, :create] do
member do
put :revoke
end
end
resource :two_factor_auth, only: [:show, :create, :destroy] do
2015-03-31 15:42:17 -04:00
member do
post :create_u2f
post :codes
2015-12-23 21:02:52 -05:00
patch :skip
2015-03-31 15:42:17 -04:00
end
end
resources :u2f_registrations, only: [:destroy]
end
end
2016-05-08 09:48:07 -04:00
scope(path: 'u/:username',
2016-05-09 22:56:12 -04:00
as: :user,
2016-05-08 09:48:07 -04:00
constraints: { username: /[a-zA-Z.0-9_\-]+(?<!\.atom)/ },
controller: :users) do
2016-05-09 22:56:12 -04:00
get :calendar
get :calendar_activities
get :groups
get :projects
get :contributed, as: :contributed_projects
get :snippets
get '/', action: :show
2016-05-08 04:27:33 -04:00
end
2013-01-22 12:05:01 -05:00
#
# Dashboard Area
#
resource :dashboard, controller: 'dashboard', only: [] do
get :issues
get :merge_requests
get :activity
2015-03-03 10:19:37 -05:00
scope module: :dashboard do
resources :milestones, only: [:index, :show]
resources :labels, only: [:index]
2015-03-08 20:03:30 -04:00
resources :groups, only: [:index]
resources :snippets, only: [:index]
resources :todos, only: [:index, :destroy] do
collection do
delete :destroy_all
end
end
2015-03-09 17:12:03 -04:00
resources :projects, only: [:index] do
2015-03-09 17:12:03 -04:00
collection do
get :starred
end
end
2015-03-03 10:19:37 -05:00
end
root to: "dashboard/projects#index"
2013-01-27 05:56:20 -05:00
end
2011-10-08 17:36:38 -04:00
2012-10-02 13:42:15 -04:00
#
# Groups Area
#
2015-04-21 10:57:01 -04:00
resources :groups, constraints: { id: /[a-zA-Z.0-9_\-]+(?<!\.atom)/ } do
2012-10-02 13:42:15 -04:00
member do
get :issues
get :merge_requests
get :projects
get :activity
2012-10-02 13:42:15 -04:00
end
2014-01-27 16:34:05 -05:00
scope module: :groups do
resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do
2015-04-10 09:26:03 -04:00
post :resend_invite, on: :member
delete :leave, on: :collection
end
2014-01-27 16:34:05 -05:00
resource :avatar, only: [:destroy]
resources :milestones, constraints: { id: /[^\/]+/ }, only: [:index, :show, :update, :new, :create]
2014-01-27 16:34:05 -05:00
end
2012-10-02 13:42:15 -04:00
end
resources :projects, constraints: { id: /[^\/]+/ }, only: [:index, :new, :create]
devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks,
registrations: :registrations,
passwords: :passwords,
sessions: :sessions,
confirmations: :confirmations }
2011-10-08 17:36:38 -04:00
2014-06-24 08:16:52 -04:00
devise_scope :user do
get '/users/auth/:provider/omniauth_error' => 'omniauth_callbacks#omniauth_error', as: :omniauth_error
2016-03-11 11:14:29 -05:00
get '/users/almost_there' => 'confirmations#almost_there'
2014-06-24 08:16:52 -04:00
end
root to: "root#index"
#
# Project Area
#
resources :namespaces, path: '/', constraints: { id: /[a-zA-Z.0-9_\-]+/ }, only: [] do
2015-04-21 10:57:01 -04:00
resources(:projects, constraints: { id: /[a-zA-Z.0-9_\-]+(?<!\.atom)/ }, except:
[:new, :create, :index], path: "/") 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
2016-06-17 09:47:00 -04:00
post :generate_new_export
get :download_export
get :autocomplete_sources
get :activity
2016-06-07 09:40:21 -04:00
get :refs
2014-08-02 11:12:01 -04:00
end
scope module: :projects do
scope constraints: { id: /.+\.git/, format: nil } do
2016-07-20 12:41:26 -04:00
# Git HTTP clients ('git clone' etc.)
2016-03-24 11:28:18 -04:00
get '/info/refs', to: 'git_http#info_refs'
post '/git-upload-pack', to: 'git_http#git_upload_pack'
post '/git-receive-pack', to: 'git_http#git_receive_pack'
2016-07-20 12:41:26 -04:00
# Git LFS API (metadata)
post '/info/lfs/objects/batch', to: 'lfs_api#batch'
post '/info/lfs/objects', to: 'lfs_api#deprecated'
get '/info/lfs/objects/*oid', to: 'lfs_api#deprecated'
# GitLab LFS object storage
scope constraints: { oid: /[a-f0-9]{64}/ } do
get '/gitlab-lfs/objects/*oid', to: 'lfs_storage#download'
scope constraints: { size: /[0-9]+/ } do
put '/gitlab-lfs/objects/*oid/*size/authorize', to: 'lfs_storage#upload_authorize'
put '/gitlab-lfs/objects/*oid/*size', to: 'lfs_storage#upload_finalize'
end
end
2016-03-23 13:34:16 -04:00
end
# Allow /info/refs, /info/refs?service=git-upload-pack, and
# /info/refs?service=git-receive-pack, but nothing else.
#
git_http_handshake = lambda do |request|
request.query_string.blank? ||
request.query_string.match(/\Aservice=git-(upload|receive)-pack\z/)
end
ref_redirect = redirect do |params, request|
path = "#{params[:namespace_id]}/#{params[:project_id]}.git/info/refs"
path << "?#{request.query_string}" unless request.query_string.blank?
path
end
get '/info/refs', constraints: git_http_handshake, to: ref_redirect
# Blob routes:
get '/new/*id', to: 'blob#new', constraints: { id: /.+/ }, as: 'new_blob'
post '/create/*id', to: 'blob#create', constraints: { id: /.+/ }, as: 'create_blob'
get '/edit/*id', to: 'blob#edit', constraints: { id: /.+/ }, as: 'edit_blob'
put '/update/*id', to: 'blob#update', constraints: { id: /.+/ }, as: 'update_blob'
post '/preview/*id', to: 'blob#preview', constraints: { id: /.+/ }, as: 'preview_blob'
#
# Templates
#
get '/templates/:template_type/:key' => 'templates#show', as: :template
scope do
get(
'/blob/*id/diff',
to: 'blob#diff',
constraints: { id: /.+/, format: false },
as: :blob_diff
)
get(
'/blob/*id',
to: 'blob#show',
constraints: { id: /.+/, format: false },
as: :blob
)
delete(
'/blob/*id',
to: 'blob#destroy',
constraints: { id: /.+/, format: false }
)
put(
'/blob/*id',
to: 'blob#update',
constraints: { id: /.+/, format: false }
)
post(
'/blob/*id',
to: 'blob#create',
constraints: { id: /.+/, format: false }
)
end
scope do
get(
'/raw/*id',
to: 'raw#show',
constraints: { id: /.+/, format: /(html|js)/ },
as: :raw
)
end
scope do
get(
'/tree/*id',
to: 'tree#show',
constraints: { id: /.+/, format: /(html|js)/ },
as: :tree
)
end
scope do
get(
'/find_file/*id',
to: 'find_file#show',
constraints: { id: /.+/, format: /html/ },
as: :find_file
)
end
scope do
get(
'/files/*id',
to: 'find_file#list',
constraints: { id: /(?:[^.]|\.(?!json$))+/, format: /json/ },
as: :files
)
end
scope do
post(
2015-12-14 21:53:52 -05:00
'/create_dir/*id',
to: 'tree#create_dir',
constraints: { id: /.+/ },
as: 'create_dir'
)
end
scope do
get(
'/blame/*id',
to: 'blame#show',
constraints: { id: /.+/, format: /(html|js)/ },
as: :blame
)
end
2012-08-09 00:34:29 -04:00
scope do
get(
'/commits/*id',
to: 'commits#show',
2015-03-20 16:01:43 -04:00
constraints: { id: /(?:[^.]|\.(?!atom$))+/, format: /atom/ },
as: :commits
)
end
resource :avatar, only: [:show, :destroy]
resources :commit, only: [:show], constraints: { id: /\h{7,40}/ } do
member do
get :branches
get :builds
post :cancel_builds
post :retry_builds
post :revert
post :cherry_pick
get :diff_for_path
end
end
resources :compare, only: [:index, :create] do
collection do
get :diff_for_path
end
end
get '/compare/:from...:to', to: 'compare#show', as: 'compare', constraints: { from: /.+/, to: /.+/ }
# Don't use format parameter as file extension (old 3.0.x behavior)
# See http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-segments
scope format: false do
resources :network, only: [:show], constraints: { id: Gitlab::Regex.git_reference_regex }
resources :graphs, only: [:show], constraints: { id: Gitlab::Regex.git_reference_regex } do
member do
get :commits
get :ci
get :languages
end
end
end
2012-02-19 12:05:35 -05:00
resources :snippets, constraints: { id: /\d+/ } do
member do
get 'raw'
end
end
WIKI_SLUG_ID = { id: /\S+/ } unless defined? WIKI_SLUG_ID
2012-11-19 14:34:05 -05:00
scope do
# Order matters to give priority to these matches
get '/wikis/git_access', to: 'wikis#git_access'
get '/wikis/pages', to: 'wikis#pages', as: 'wiki_pages'
post '/wikis', to: 'wikis#create'
get '/wikis/*id/history', to: 'wikis#history', as: 'wiki_history', constraints: WIKI_SLUG_ID
get '/wikis/*id/edit', to: 'wikis#edit', as: 'wiki_edit', constraints: WIKI_SLUG_ID
get '/wikis/*id', to: 'wikis#show', as: 'wiki', constraints: WIKI_SLUG_ID
delete '/wikis/*id', to: 'wikis#destroy', constraints: WIKI_SLUG_ID
put '/wikis/*id', to: 'wikis#update', constraints: WIKI_SLUG_ID
post '/wikis/*id/preview_markdown', to: 'wikis#preview_markdown', constraints: WIKI_SLUG_ID, as: 'wiki_preview_markdown'
end
2013-05-06 08:10:55 -04:00
2016-05-03 18:32:14 -04:00
resource :repository, only: [:create] do
member do
get 'archive', constraints: { format: Gitlab::Regex.archive_formats_regex }
end
end
2011-12-29 14:44:16 -05:00
resources :services, constraints: { id: /[^\/]+/ }, only: [:index, :edit, :update] do
member do
get :test
end
end
2011-11-16 12:19:18 -05:00
resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create] do
member do
put :enable
put :disable
end
end
2011-10-16 17:07:10 -04:00
resources :forks, only: [:index, :new, :create]
resource :import, only: [:new, :create, :show]
resources :refs, only: [] do
collection do
get 'switch'
end
member do
# tree viewer logs
get 'logs_tree', constraints: { id: Gitlab::Regex.git_reference_regex }
# Directories with leading dots erroneously get rejected if git
# ref regex used in constraints. Regex verification now done in controller.
get 'logs_tree/*path' => 'refs#logs_tree', as: :logs_file, constraints: {
id: /.*/,
path: /.*/
}
end
end
2016-02-26 03:55:43 -05:00
resources :merge_requests, constraints: { id: /\d+/ } do
member do
get :commits
get :diffs
get :conflicts
2015-12-08 07:04:24 -05:00
get :builds
get :pipelines
get :merge_check
post :merge
2015-11-18 05:17:41 -05:00
post :cancel_merge_when_build_succeeds
get :ci_status
2015-03-16 11:20:17 -04:00
post :toggle_subscription
2016-04-16 15:09:08 -04:00
post :toggle_award_emoji
post :remove_wip
get :diff_for_path
post :resolve_conflicts
end
collection do
get :branch_from
get :branch_to
get :update_branches
get :diff_for_path
end
resources :discussions, only: [], constraints: { id: /\h{40}/ } do
member do
post :resolve
delete :resolve, action: :unresolve
end
end
end
resources :branches, only: [:index, :new, :create, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
resources :tags, only: [:index, :show, :new, :create, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex } do
resource :release, only: [:edit, :update]
end
resources :protected_branches, only: [:index, :show, :create, :update, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
2016-04-27 04:01:43 -04:00
resources :variables, only: [:index, :show, :update, :create, :destroy]
resources :triggers, only: [:index, :create, :destroy]
2016-04-13 07:01:08 -04:00
resources :pipelines, only: [:index, :new, :create, :show] do
collection do
resource :pipelines_settings, path: 'settings', only: [:show, :update]
end
2016-04-12 10:16:39 -04:00
member do
post :cancel
post :retry
end
end
resources :environments
2016-04-29 09:14:38 -04:00
resources :builds, only: [:index, :show], constraints: { id: /\d+/ } do
2015-10-14 06:15:03 -04:00
collection do
post :cancel_all
2015-10-14 06:15:03 -04:00
end
member do
get :status
post :cancel
post :retry
2016-07-16 12:39:58 -04:00
post :play
post :erase
get :trace
get :raw
end
resource :artifacts, only: [] do
get :download
get :browse, path: 'browse(/*path)', format: false
get :file, path: 'file/*path', format: false
2016-06-08 11:18:54 -04:00
post :keep
end
end
resources :hooks, only: [:index, :create, :destroy], constraints: { id: /\d+/ } do
member do
get :test
end
end
2016-05-08 16:50:30 -04:00
resources :container_registry, only: [:index, :destroy], constraints: { id: Gitlab::Regex.container_registry_reference_regex }
2016-04-18 08:14:40 -04:00
resources :milestones, constraints: { id: /\d+/ } do
member do
put :sort_issues
put :sort_merge_requests
end
end
2016-05-03 18:32:14 -04:00
resources :labels, except: [:show], constraints: { id: /\d+/ } do
collection do
post :generate
2016-06-02 16:21:15 -04:00
post :set_priorities
end
member do
post :toggle_subscription
delete :remove_priority
end
end
2016-02-26 03:55:43 -05:00
resources :issues, constraints: { id: /\d+/ } do
2015-03-15 12:17:12 -04:00
member do
2015-03-16 11:20:17 -04:00
post :toggle_subscription
2016-04-16 15:09:08 -04:00
post :toggle_award_emoji
post :mark_as_spam
get :referenced_merge_requests
get :related_branches
get :can_create_branch
2015-03-15 12:17:12 -04:00
end
collection do
post :bulk_update
end
end
2012-09-25 18:45:30 -04:00
2016-05-03 18:32:14 -04:00
resources :project_members, except: [:show, :new, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ }, concerns: :access_requestable do
collection do
delete :leave
2012-10-24 07:20:53 -04:00
# Used for import team
# from another project
get :import
post :apply_import
end
2015-04-10 09:26:03 -04:00
member do
post :resend_invite
end
end
2012-10-24 07:20:53 -04:00
resources :group_links, only: [:index, :create, :destroy], constraints: { id: /\d+/ }
resources :notes, only: [:index, :create, :destroy, :update], constraints: { id: /\d+/ } do
member do
2016-06-03 17:16:13 -04:00
post :toggle_award_emoji
delete :delete_attachment
post :resolve
delete :resolve, action: :unresolve
end
end
resource :board, only: [:show] do
scope module: :boards do
resources :issues, only: [:update]
resources :lists, only: [:index, :create, :update, :destroy] do
collection do
post :generate
end
resources :issues, only: [:index]
end
end
end
2016-08-01 12:09:41 -04:00
resources :todos, only: [:create]
resources :uploads, only: [:create] do
collection do
get ":secret/:filename", action: :show, as: :show, constraints: { filename: /[^\/]+/ }
end
end
resources :runners, only: [:index, :edit, :update, :destroy, :show] do
member do
get :resume
get :pause
end
2015-12-04 06:55:23 -05:00
collection do
post :toggle_shared_runners
end
end
2015-12-04 06:55:23 -05:00
resources :runner_projects, only: [:create, :destroy]
2016-03-22 05:21:45 -04:00
resources :badges, only: [:index] do
collection do
2016-03-21 06:59:55 -04:00
scope '*ref', constraints: { ref: Gitlab::Regex.git_reference_regex } do
constraints format: /svg/ do
get :build
get :coverage
end
2016-03-21 06:59:55 -04:00
end
end
end
end
2012-08-08 05:25:24 -04:00
end
2011-10-08 17:36:38 -04:00
end
# Get all keys of user
get ':username.keys' => 'profiles/keys#get_keys', constraints: { username: /.*/ }
get ':id' => 'namespaces#show', constraints: { id: /(?:[^.]|\.(?!atom$))+/, format: /atom/ }
2011-10-08 17:36:38 -04:00
end