2013-12-24 00:50:36 +01:00
require " sidekiq/web "
2014-02-06 10:14:41 +11:00
require_dependency " scheduler/web "
2013-12-24 00:50:36 +01:00
require_dependency " admin_constraint "
require_dependency " staff_constraint "
require_dependency " homepage_constraint "
2014-08-29 11:28:16 -04:00
require_dependency " permalink_constraint "
2013-02-05 14:16:51 -05:00
# This used to be User#username_format, but that causes a preload of the User object
2013-02-14 11:11:13 -08:00
# and makes Guard not work properly.
2015-09-02 12:13:44 +10:00
USERNAME_ROUTE_FORMAT = / [A-Za-z0-9 \ _. \ -]+ / unless defined? USERNAME_ROUTE_FORMAT
2015-09-02 14:57:26 +10:00
2015-04-07 15:26:47 +02:00
BACKUP_ROUTE_FORMAT = / [a-zA-Z0-9 \ -_]* \ d{4}(- \ d{2}){2}- \ d{6} \ .(tar \ .gz|t?gz) /i unless defined? BACKUP_ROUTE_FORMAT
2013-02-05 14:16:51 -05:00
Discourse :: Application . routes . draw do
2013-07-01 20:00:06 +02:00
match " /404 " , to : " exceptions # not_found " , via : [ :get , :post ]
2014-04-29 15:17:40 -04:00
get " /404-body " = > " exceptions # not_found_body "
2013-02-05 14:16:51 -05:00
2014-08-18 12:12:48 +05:30
if Rails . env . development?
2014-05-24 22:50:39 +10:00
mount Sidekiq :: Web = > " /sidekiq "
mount Logster :: Web = > " /logs "
else
mount Sidekiq :: Web = > " /sidekiq " , constraints : AdminConstraint . new
mount Logster :: Web = > " /logs " , constraints : AdminConstraint . new
2014-05-07 08:23:52 +10:00
end
2015-08-27 17:28:33 -04:00
resources :about do
collection do
get " live_post_counts "
end
end
2014-08-11 16:59:00 -04:00
2015-03-16 15:14:33 -04:00
resources :directory_items
2015-03-04 20:49:03 -08:00
get " site " = > " site # site "
namespace :site do
get " settings "
get " custom_html "
get " banner "
get " emoji "
end
2014-12-23 12:46:10 +11:00
get " site_customizations/:key " = > " site_customizations # show "
2013-02-05 14:16:51 -05:00
2013-06-25 15:05:16 -04:00
resources :forums
2013-12-24 00:50:36 +01:00
get " srv/status " = > " forums # status "
2013-02-05 14:16:51 -05:00
2013-05-02 17:22:27 +10:00
namespace :admin , constraints : StaffConstraint . new do
2013-12-24 00:50:36 +01:00
get " " = > " admin # index "
2013-02-05 14:16:51 -05:00
2015-02-06 17:32:59 -05:00
get 'plugins' = > 'plugins#index'
2013-11-13 14:02:47 -05:00
resources :site_settings , constraints : AdminConstraint . new do
collection do
2013-12-24 00:50:36 +01:00
get " category/:id " = > " site_settings # index "
2013-11-13 14:02:47 -05:00
end
end
2013-05-02 15:15:17 +10:00
2013-12-24 00:50:36 +01:00
get " reports/:type " = > " reports # show "
2013-02-27 22:39:42 -05:00
2013-05-08 15:20:38 +10:00
resources :groups , constraints : AdminConstraint . new do
collection do
2013-12-24 00:50:36 +01:00
post " refresh_automatic_groups " = > " groups # refresh_automatic_groups "
2015-10-26 15:56:59 -04:00
get 'bulk'
get 'bulk-complete' = > 'groups#bulk'
put 'bulk' = > 'groups#bulk_perform'
2013-05-08 15:20:38 +10:00
end
2015-01-21 20:52:48 +01:00
member do
2015-11-10 00:52:04 +11:00
put " owners " = > " groups # add_owners "
delete " owners " = > " groups # remove_owner "
2015-01-21 20:52:48 +01:00
end
2013-05-08 15:20:38 +10:00
end
2015-01-21 20:52:48 +01:00
get " groups/:type " = > " groups # show " , constraints : AdminConstraint . new
get " groups/:type/:id " = > " groups # show " , constraints : AdminConstraint . new
2015-09-02 14:57:26 +10:00
get " users/:id.json " = > 'users#show' , id : USERNAME_ROUTE_FORMAT , defaults : { format : 'json' }
2013-02-05 14:16:51 -05:00
resources :users , id : USERNAME_ROUTE_FORMAT do
collection do
2013-12-24 00:50:36 +01:00
get " list/:query " = > " users # index "
2014-07-07 22:18:18 +02:00
get " ip-info " = > " users # ip_info "
2014-11-20 19:59:20 +01:00
delete " delete-others-with-same-ip " = > " users # delete_other_accounts_with_same_ip "
2014-11-24 19:34:04 +01:00
get " total-others-with-same-ip " = > " users # total_other_accounts_with_same_ip "
2013-12-24 00:50:36 +01:00
put " approve-bulk " = > " users # approve_bulk "
delete " reject-bulk " = > " users # reject_bulk "
2013-02-05 14:16:51 -05:00
end
2013-12-24 00:50:36 +01:00
put " suspend "
put " delete_all_posts "
put " unsuspend "
put " revoke_admin " , constraints : AdminConstraint . new
put " grant_admin " , constraints : AdminConstraint . new
post " generate_api_key " , constraints : AdminConstraint . new
delete " revoke_api_key " , constraints : AdminConstraint . new
put " revoke_moderation " , constraints : AdminConstraint . new
put " grant_moderation " , constraints : AdminConstraint . new
put " approve "
post " refresh_browsers " , constraints : AdminConstraint . new
2014-06-06 13:02:52 +10:00
post " log_out " , constraints : AdminConstraint . new
2013-12-24 00:50:36 +01:00
put " activate "
put " deactivate "
put " block "
put " unblock "
put " trust_level "
2014-09-13 13:55:26 -07:00
put " trust_level_lock "
2014-02-10 16:59:36 -05:00
put " primary_group "
2014-07-13 20:11:38 +02:00
post " groups " = > " users # add_group " , constraints : AdminConstraint . new
delete " groups/:group_id " = > " users # remove_group " , constraints : AdminConstraint . new
2014-03-19 19:57:21 +05:30
get " badges "
2014-09-24 17:19:26 -07:00
get " leader_requirements " = > " users # tl3_requirements "
get " tl3_requirements "
2015-03-06 16:44:54 -05:00
put " anonymize "
2013-02-05 14:16:51 -05:00
end
2014-10-28 11:25:02 +11:00
post " users/sync_sso " = > " users # sync_sso " , constraints : AdminConstraint . new
2014-11-24 15:42:39 +11:00
post " users/invite_admin " = > " users # invite_admin " , constraints : AdminConstraint . new
2014-10-28 11:25:02 +11:00
2013-05-02 15:15:17 +10:00
resources :impersonate , constraints : AdminConstraint . new
2013-06-03 16:12:24 -04:00
2015-09-29 12:37:46 -04:00
resources :email , constraints : AdminConstraint . new do
2013-02-05 14:16:51 -05:00
collection do
2013-12-24 00:50:36 +01:00
post " test "
2014-02-15 01:17:13 +01:00
get " all "
2014-02-15 00:50:08 +01:00
get " sent "
2014-02-14 13:06:21 -05:00
get " skipped "
2013-12-24 00:50:36 +01:00
get " preview-digest " = > " email # preview_digest "
2015-10-19 08:33:24 +11:00
post " handle_mail "
2013-02-05 14:16:51 -05:00
end
end
2013-06-03 16:12:24 -04:00
2013-12-24 00:50:36 +01:00
scope " /logs " do
2013-10-21 14:49:51 -04:00
resources :staff_action_logs , only : [ :index ]
2014-06-02 16:52:43 +10:00
resources :screened_emails , only : [ :index , :destroy ]
2014-11-24 17:25:48 +01:00
resources :screened_ip_addresses , only : [ :index , :create , :update , :destroy ] do
collection do
post " roll_up "
end
end
2013-10-21 14:49:51 -04:00
resources :screened_urls , only : [ :index ]
2013-08-01 21:30:13 -04:00
end
2014-07-14 13:21:29 +10:00
get " /logs " = > " staff_action_logs # index "
2014-04-16 09:49:06 -04:00
get " customize " = > " color_schemes # index " , constraints : AdminConstraint . new
get " customize/css_html " = > " site_customizations # index " , constraints : AdminConstraint . new
2015-08-06 12:43:56 -04:00
get " customize/css_html/:id/:section " = > " site_customizations # index " , constraints : AdminConstraint . new
2014-04-16 09:49:06 -04:00
get " customize/colors " = > " color_schemes # index " , constraints : AdminConstraint . new
2015-07-15 18:24:28 +05:30
get " customize/permalinks " = > " permalinks # index " , constraints : AdminConstraint . new
2015-08-18 17:15:46 -04:00
get " customize/embedding " = > " embedding # show " , constraints : AdminConstraint . new
put " customize/embedding " = > " embedding # update " , constraints : AdminConstraint . new
2013-12-24 00:50:36 +01:00
get " flags " = > " flags # index "
get " flags/:filter " = > " flags # index "
post " flags/agree/:id " = > " flags # agree "
post " flags/disagree/:id " = > " flags # disagree "
post " flags/defer/:id " = > " flags # defer "
2013-05-02 15:15:17 +10:00
resources :site_customizations , constraints : AdminConstraint . new
2014-09-23 17:12:01 -04:00
scope " /customize " do
2015-08-07 14:05:08 -04:00
resources :site_texts , constraints : AdminConstraint . new
2014-09-24 14:45:35 -04:00
resources :site_text_types , constraints : AdminConstraint . new
2014-09-25 11:32:08 -04:00
resources :user_fields , constraints : AdminConstraint . new
2014-12-23 01:12:26 +01:00
resources :emojis , constraints : AdminConstraint . new
2014-09-23 17:12:01 -04:00
end
2015-08-18 17:15:46 -04:00
resources :embeddable_hosts , constraints : AdminConstraint . new
2014-04-16 09:49:06 -04:00
resources :color_schemes , constraints : AdminConstraint . new
2014-02-12 20:33:40 -08:00
2015-07-15 18:24:28 +05:30
resources :permalinks , constraints : AdminConstraint . new
2013-12-24 00:50:36 +01:00
get " version_check " = > " versions # show "
2014-02-12 20:33:40 -08:00
2013-03-29 15:48:26 -04:00
resources :dashboard , only : [ :index ] do
collection do
2013-12-24 00:50:36 +01:00
get " problems "
2013-03-29 15:48:26 -04:00
end
end
2014-02-12 20:33:40 -08:00
2013-05-02 15:15:17 +10:00
resources :api , only : [ :index ] , constraints : AdminConstraint . new do
2013-03-25 18:04:28 -07:00
collection do
2013-12-24 00:50:36 +01:00
post " key " = > " api # create_master_key "
put " key " = > " api # regenerate_key "
delete " key " = > " api # revoke_key "
2013-03-25 18:04:28 -07:00
end
end
2014-02-12 20:33:40 -08:00
resources :backups , only : [ :index , :create ] , constraints : AdminConstraint . new do
member do
get " " = > " backups # show " , constraints : { id : BACKUP_ROUTE_FORMAT }
delete " " = > " backups # destroy " , constraints : { id : BACKUP_ROUTE_FORMAT }
post " restore " = > " backups # restore " , constraints : { id : BACKUP_ROUTE_FORMAT }
end
collection do
get " logs " = > " backups # logs "
get " status " = > " backups # status "
get " cancel " = > " backups # cancel "
get " rollback " = > " backups # rollback "
put " readonly " = > " backups # readonly "
2014-05-28 01:44:37 +05:30
get " upload " = > " backups # check_backup_chunk "
post " upload " = > " backups # upload_backup_chunk "
2014-02-12 20:33:40 -08:00
end
end
2014-02-15 00:50:08 +01:00
2014-03-05 18:22:20 +05:30
resources :badges , constraints : AdminConstraint . new do
collection do
get " types " = > " badges # badge_types "
2014-07-27 18:22:01 +10:00
post " badge_groupings " = > " badges # save_badge_groupings "
2014-07-24 18:28:09 +10:00
post " preview " = > " badges # preview "
2014-03-05 18:22:20 +05:30
end
end
2014-02-14 15:43:08 +11:00
get " memory_stats " = > " diagnostics # memory_stats " , constraints : AdminConstraint . new
2014-12-07 22:54:35 +00:00
get " dump_heap " = > " diagnostics # dump_heap " , constraints : AdminConstraint . new
2015-10-19 14:02:22 +11:00
get " dump_statement_cache " = > " diagnostics # dump_statement_cache " , constraints : AdminConstraint . new
2014-02-12 20:33:40 -08:00
2013-11-12 16:42:35 +11:00
end # admin namespace
2013-02-05 14:16:51 -05:00
2013-12-24 00:50:36 +01:00
get " email_preferences " = > " email # preferences_redirect " , :as = > " email_preferences_redirect "
get " email/unsubscribe/:key " = > " email # unsubscribe " , as : " email_unsubscribe "
post " email/resubscribe/:key " = > " email # resubscribe " , as : " email_resubscribe "
2013-02-05 14:16:51 -05:00
2014-10-07 12:25:25 -04:00
resources :session , id : USERNAME_ROUTE_FORMAT , only : [ :create , :destroy , :become ] do
get 'become'
2013-02-14 11:11:13 -08:00
collection do
2013-12-24 00:50:36 +01:00
post " forgot_password "
2013-02-05 14:16:51 -05:00
end
2013-02-14 11:11:13 -08:00
end
2013-02-05 14:16:51 -05:00
2014-02-25 14:30:49 +11:00
get " session/sso " = > " session # sso "
get " session/sso_login " = > " session # sso_login "
2014-11-26 17:25:54 +11:00
get " session/sso_provider " = > " session # sso_provider "
2014-02-05 13:46:24 -05:00
get " session/current " = > " session # current "
2013-12-24 00:50:36 +01:00
get " session/csrf " = > " session # csrf "
get " composer-messages " = > " composer_messages # index "
2013-07-29 15:13:13 +10:00
2014-02-13 11:42:35 -05:00
resources :users , except : [ :show , :update , :destroy ] do
2013-02-14 11:11:13 -08:00
collection do
2013-12-24 00:50:36 +01:00
get " check_username "
get " is_local_username "
2013-02-05 14:16:51 -05:00
end
end
resources :static
2013-12-24 00:50:36 +01:00
post " login " = > " static # enter "
get " login " = > " static # show " , id : " login "
2015-03-23 15:13:55 -04:00
get " password-reset " = > " static # show " , id : " password_reset "
2013-12-24 00:50:36 +01:00
get " faq " = > " static # show " , id : " faq "
2015-02-13 19:34:22 +08:00
get " guidelines " = > " static # show " , id : " guidelines " , as : 'guidelines'
get " tos " = > " static # show " , id : " tos " , as : 'tos'
get " privacy " = > " static # show " , id : " privacy " , as : 'privacy'
2014-02-18 17:18:42 -05:00
get " signup " = > " list # latest "
2015-10-14 13:39:31 -04:00
get " login-preferences " = > " static # show " , id : " login "
2013-12-24 00:50:36 +01:00
2015-04-27 16:29:48 +05:30
get " users/admin-login " = > " users # admin_login "
put " users/admin-login " = > " users # admin_login "
get " users/admin-login/:token " = > " users # admin_login "
2015-04-07 18:02:10 +10:00
post " users/toggle-anon " = > " users # toggle_anon "
2014-07-11 17:32:29 +10:00
post " users/read-faq " = > " users # read_faq "
2013-12-24 00:50:36 +01:00
get " users/search/users " = > " users # search_users "
2014-10-01 10:30:26 -04:00
get " users/account-created/ " = > " users # account_created "
2013-12-24 00:50:36 +01:00
get " users/password-reset/:token " = > " users # password_reset "
put " users/password-reset/:token " = > " users # password_reset "
get " users/activate-account/:token " = > " users # activate_account "
2014-07-14 12:25:42 -04:00
put " users/activate-account/:token " = > " users # perform_account_activation " , as : 'perform_activate_account'
2013-12-24 00:50:36 +01:00
get " users/authorize-email/:token " = > " users # authorize_email "
get " users/hp " = > " users # get_honeypot_value "
2014-06-14 10:51:06 -07:00
get " my/*path " , to : 'users#my_redirect'
2013-12-24 00:50:36 +01:00
get " user_preferences " = > " users # user_preferences_redirect "
get " users/:username/private-messages " = > " user_actions # private_messages " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " users/:username/private-messages/:filter " = > " user_actions # private_messages " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-04-17 12:01:50 -04:00
get " users/:username/messages " = > " user_actions # private_messages " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " users/:username/messages/:filter " = > " user_actions # private_messages " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-09-02 14:57:26 +10:00
get " users/:username.json " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT } , defaults : { format : :json }
2014-06-04 16:51:48 -04:00
get " users/:username " = > " users # show " , as : 'user' , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-12-24 00:50:36 +01:00
put " users/:username " = > " users # update " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-09-29 22:31:05 +02:00
put " users/:username/emails " = > " users # check_emails " , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-12-24 00:50:36 +01:00
get " users/:username/preferences " = > " users # preferences " , constraints : { username : USERNAME_ROUTE_FORMAT } , as : :email_preferences
get " users/:username/preferences/email " = > " users # preferences " , constraints : { username : USERNAME_ROUTE_FORMAT }
put " users/:username/preferences/email " = > " users # change_email " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " users/:username/preferences/about-me " = > " users # preferences " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-04-18 08:40:53 +05:30
get " users/:username/preferences/badge_title " = > " users # preferences " , constraints : { username : USERNAME_ROUTE_FORMAT }
put " users/:username/preferences/badge_title " = > " users # badge_title " , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-12-24 00:50:36 +01:00
get " users/:username/preferences/username " = > " users # preferences " , constraints : { username : USERNAME_ROUTE_FORMAT }
put " users/:username/preferences/username " = > " users # username " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-06-27 14:48:39 -04:00
delete " users/:username/preferences/user_image " = > " users # destroy_user_image " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-05-26 19:46:43 +10:00
put " users/:username/preferences/avatar/pick " = > " users # pick_avatar " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-10-20 13:15:58 -04:00
get " users/:username/preferences/card-badge " = > " users # card_badge " , constraints : { username : USERNAME_ROUTE_FORMAT }
put " users/:username/preferences/card-badge " = > " users # update_card_badge " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-01-05 19:49:32 +01:00
get " users/:username/staff-info " = > " users # staff_info " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-10-20 13:15:58 -04:00
2013-12-24 00:50:36 +01:00
get " users/:username/invited " = > " users # invited " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-08-25 00:33:25 +05:30
get " users/:username/invited_count " = > " users # invited_count " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-07-11 17:39:12 +05:30
get " users/:username/invited/:filter " = > " users # invited " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-09-25 17:42:48 +10:00
post " users/action/send_activation_email " = > " users # send_activation_email "
2013-12-24 00:50:36 +01:00
get " users/:username/activity " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " users/:username/activity/:filter " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-04-17 00:19:28 +05:30
get " users/:username/badges " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-09-02 18:32:27 -07:00
get " users/:username/notifications " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-04-21 14:36:46 -04:00
get " users/:username/pending " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
2014-02-13 11:42:35 -05:00
delete " users/:username " = > " users # destroy " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-02-02 12:55:32 -05:00
# The external_id constraint is to allow periods to be used in the value without becoming part of the format. ie: foo.bar.json
get " users/by-external/:external_id " = > " users # show " , constraints : { external_id : / [^ \/ ]+ / }
2014-07-16 21:04:55 +02:00
get " users/:username/flagged-posts " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " users/:username/deleted-posts " = > " users # show " , constraints : { username : USERNAME_ROUTE_FORMAT }
2015-09-02 14:57:26 +10:00
get " user-badges/:username.json " = > " user_badges # username " , constraints : { username : USERNAME_ROUTE_FORMAT } , defaults : { format : :json }
get " user-badges/:username " = > " user_badges # username " , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-12-24 00:50:36 +01:00
2015-09-02 14:57:26 +10:00
post " user_avatar/:username/refresh_gravatar " = > " user_avatars # refresh_gravatar " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " letter_avatar/:username/:size/:version.png " = > " user_avatars # show_letter " , format : false , constraints : { hostname : / [ \ w \ .-]+ / , size : / \ d+ / , username : USERNAME_ROUTE_FORMAT }
get " user_avatar/:hostname/:username/:size/:version.png " = > " user_avatars # show " , format : false , constraints : { hostname : / [ \ w \ .-]+ / , size : / \ d+ / , username : USERNAME_ROUTE_FORMAT }
2014-05-26 19:46:43 +10:00
2015-03-13 16:15:13 +11:00
get " highlight-js/:hostname/:version.js " = > " highlight_js # show " , format : false , constraints : { hostname : / [ \ w \ .-]+ / }
2015-05-20 00:04:03 +02:00
get " stylesheets/:name.css " = > " stylesheets # show " , constraints : { name : / [a-z0-9_]+ / }
2015-05-05 15:50:13 +10:00
2013-12-24 00:50:36 +01:00
post " uploads " = > " uploads # create "
2015-05-20 00:04:03 +02:00
# used to download original images
get " uploads/:site/:sha " = > " uploads # show " , constraints : { site : / \ w+ / , sha : / [a-f0-9]{40} / }
2015-05-31 23:06:36 +02:00
# used to dowwload attachments
2015-06-01 00:03:41 +02:00
get " uploads/:site/original/:tree:sha " = > " uploads # show " , constraints : { site : / \ w+ / , tree : / ( \ w+ \/ )+ /i , sha : / [a-f0-9]{40} / }
2015-05-20 14:55:42 +02:00
# used to download attachments (old route)
2015-06-01 00:03:41 +02:00
get " uploads/:site/:id/:sha " = > " uploads # show " , constraints : { site : / \ w+ / , id : / \ d+ / , sha : / [a-f0-9]{16} / }
2015-05-20 00:04:03 +02:00
2015-01-23 21:04:14 -08:00
get " posts " = > " posts # latest "
2013-12-24 00:50:36 +01:00
get " posts/by_number/:topic_id/:post_number " = > " posts # by_number "
get " posts/:id/reply-history " = > " posts # reply_history "
2014-07-16 21:04:55 +02:00
get " posts/:username/deleted " = > " posts # deleted_posts " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " posts/:username/flagged " = > " posts # flagged_posts " , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-12-24 00:50:36 +01:00
2014-02-06 13:06:19 -05:00
resources :groups do
get 'members'
2014-02-07 10:44:03 -05:00
get 'posts'
2014-02-18 16:17:04 -05:00
get 'counts'
2015-01-08 15:35:52 -08:00
2015-11-10 00:52:04 +11:00
member do
put " members " = > " groups # add_members "
delete " members " = > " groups # remove_member "
end
2014-02-06 13:06:19 -05:00
end
2014-01-30 17:10:36 -05:00
2015-11-10 00:52:04 +11:00
# aliases so old API code works
delete " admin/groups/:id/members " = > " groups # remove_member " , constraints : AdminConstraint . new
put " admin/groups/:id/members " = > " groups # add_members " , constraints : AdminConstraint . new
2014-10-14 15:10:51 -04:00
# In case people try the wrong URL
get '/group/:id' , to : redirect ( '/groups/%{id}' )
get '/group/:id/members' , to : redirect ( '/groups/%{id}/members' )
2013-02-05 14:16:51 -05:00
resources :posts do
2013-12-24 00:50:36 +01:00
put " bookmark "
2014-05-13 08:53:11 -04:00
put " wiki "
2014-09-10 23:08:33 +02:00
put " post_type "
2014-09-11 16:04:40 +02:00
put " rebake "
2014-09-22 18:55:13 +02:00
put " unhide "
2013-12-24 00:50:36 +01:00
get " replies "
2014-10-27 22:06:43 +01:00
get " revisions/latest " = > " posts # latest_revision "
get " revisions/:revision " = > " posts # revisions " , constraints : { revision : / \ d+ / }
put " revisions/:revision/hide " = > " posts # hide_revision " , constraints : { revision : / \ d+ / }
put " revisions/:revision/show " = > " posts # show_revision " , constraints : { revision : / \ d+ / }
2013-12-24 00:50:36 +01:00
put " recover "
2013-02-05 14:16:51 -05:00
collection do
2013-12-24 00:50:36 +01:00
delete " destroy_many "
2013-02-05 14:16:51 -05:00
end
end
2015-05-05 13:44:19 -04:00
get 'notifications' = > 'notifications#index'
put 'notifications/mark-read' = > 'notifications#mark_read'
2013-02-12 14:51:44 +08:00
2013-07-01 20:00:06 +02:00
match " /auth/:provider/callback " , to : " users/omniauth_callbacks # complete " , via : [ :get , :post ]
match " /auth/failure " , to : " users/omniauth_callbacks # failure " , via : [ :get , :post ]
2013-02-05 14:16:51 -05:00
resources :clicks do
collection do
2013-12-24 00:50:36 +01:00
get " track "
2013-02-05 14:16:51 -05:00
end
end
2013-12-24 00:50:36 +01:00
get " excerpt " = > " excerpt # show "
2013-02-05 14:16:51 -05:00
2015-09-30 12:28:13 -04:00
resources :post_action_users
2013-02-05 14:16:51 -05:00
resources :post_actions do
collection do
2013-12-24 00:50:36 +01:00
get " users "
2014-07-28 19:17:37 +02:00
post " defer_flags "
2013-02-05 14:16:51 -05:00
end
end
resources :user_actions
2014-04-16 18:42:06 +05:30
resources :badges , only : [ :index ]
2014-04-16 20:26:11 +05:30
get " /badges/:id(/:slug) " = > " badges # show "
2014-03-05 18:22:20 +05:30
resources :user_badges , only : [ :index , :create , :destroy ]
2015-03-30 12:15:02 -04:00
get '/c' , to : redirect ( '/categories' )
2013-07-02 15:21:26 +10:00
resources :categories , :except = > :show
2014-01-17 23:52:06 +01:00
post " category/:category_id/move " = > " categories # move "
2015-08-27 10:14:59 -07:00
post " categories/reorder " = > " categories # reorder "
2014-04-17 11:17:39 +02:00
post " category/:category_id/notifications " = > " categories # set_notifications "
2014-12-20 22:07:29 +08:00
put " category/:category_id/slug " = > " categories # update_slug "
2014-01-17 23:52:06 +01:00
2014-10-16 12:15:31 -04:00
get " c/:id/show " = > " categories # show "
get " c/:category.rss " = > " list # category_feed " , format : :rss
get " c/:parent_category/:category.rss " = > " list # category_feed " , format : :rss
get " c/:category " = > " list # category_latest "
get " c/:category/none " = > " list # category_none_latest "
get " c/:parent_category/:category " = > " list # parent_category_category_latest "
get " c/:category/l/top " = > " list # category_top " , as : " category_top "
get " c/:category/none/l/top " = > " list # category_none_top " , as : " category_none_top "
get " c/:parent_category/:category/l/top " = > " list # parent_category_category_top " , as : " parent_category_category_top "
2014-01-14 01:02:14 +01:00
TopTopic . periods . each do | period |
get " top/ #{ period } " = > " list # top_ #{ period } "
2014-10-16 12:15:31 -04:00
get " c/:category/l/top/ #{ period } " = > " list # category_top_ #{ period } " , as : " category_top_ #{ period } "
get " c/:category/none/l/top/ #{ period } " = > " list # category_none_top_ #{ period } " , as : " category_none_top_ #{ period } "
get " c/:parent_category/:category/l/top/ #{ period } " = > " list # parent_category_category_top_ #{ period } " , as : " parent_category_category_top_ #{ period } "
2013-07-05 16:49:06 -04:00
end
2014-10-16 14:52:21 +11:00
Discourse . anonymous_filters . each do | filter |
get " #{ filter } .rss " = > " list # #{ filter } _feed " , format : :rss
end
2013-12-24 00:50:36 +01:00
Discourse . filters . each do | filter |
2015-09-11 00:16:37 +05:30
get " #{ filter } " = > " list # #{ filter } " , constraints : { format : / (json|html) / }
2014-10-16 12:15:31 -04:00
get " c/:category/l/ #{ filter } " = > " list # category_ #{ filter } " , as : " category_ #{ filter } "
get " c/:category/none/l/ #{ filter } " = > " list # category_none_ #{ filter } " , as : " category_none_ #{ filter } "
get " c/:parent_category/:category/l/ #{ filter } " = > " list # parent_category_category_ #{ filter } " , as : " parent_category_category_ #{ filter } "
2013-03-28 14:01:13 +01:00
end
2013-02-05 14:16:51 -05:00
2014-10-16 12:15:31 -04:00
get " category/*path " = > " categories # redirect "
get " top " = > " list # top "
2015-04-04 07:55:32 +11:00
get " search/query " = > " search # query "
2015-07-27 16:46:50 +10:00
get " search " = > " search # show "
2013-02-05 14:16:51 -05:00
# Topics resource
2013-12-24 00:50:36 +01:00
get " t/:id " = > " topics # show "
post " t " = > " topics # create "
2014-01-14 01:02:14 +01:00
put " t/:id " = > " topics # update "
delete " t/:id " = > " topics # destroy "
2014-01-29 15:48:52 -05:00
put " topics/bulk "
2014-03-03 15:46:38 -05:00
put " topics/reset-new " = > 'topics#reset_new'
2013-12-24 00:50:36 +01:00
post " topics/timings "
2015-06-24 15:08:22 -04:00
get 'topics/similar_to' = > 'similar_topics#index'
resources :similar_topics
2015-03-14 01:18:05 +01:00
get " topics/feature_stats "
2013-12-24 00:50:36 +01:00
get " topics/created-by/:username " = > " list # topics_by " , as : " topics_by " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " topics/private-messages/:username " = > " list # private_messages " , as : " topics_private_messages " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " topics/private-messages-sent/:username " = > " list # private_messages_sent " , as : " topics_private_messages_sent " , constraints : { username : USERNAME_ROUTE_FORMAT }
get " topics/private-messages-unread/:username " = > " list # private_messages_unread " , as : " topics_private_messages_unread " , constraints : { username : USERNAME_ROUTE_FORMAT }
2013-02-05 14:16:51 -05:00
2014-01-03 12:52:24 -05:00
get 'embed/comments' = > 'embed#comments'
2014-01-13 12:47:24 -05:00
get 'embed/count' = > 'embed#count'
2015-05-06 01:00:31 +00:00
get 'embed/info' = > 'embed#info'
2013-12-31 14:37:43 -05:00
2015-04-28 00:06:02 +05:30
get " new-topic " = > " list # latest "
2013-02-14 11:11:13 -08:00
# Topic routes
2014-09-17 11:18:41 -04:00
get " t/id_for/:slug " = > " topics # id_for_slug "
2013-12-24 00:50:36 +01:00
get " t/:slug/:topic_id/wordpress " = > " topics # wordpress " , constraints : { topic_id : / \ d+ / }
get " t/:topic_id/wordpress " = > " topics # wordpress " , constraints : { topic_id : / \ d+ / }
2015-08-12 23:00:16 +02:00
get " t/:slug/:topic_id/moderator-liked " = > " topics # moderator_liked " , constraints : { topic_id : / \ d+ / }
get " t/:slug/:topic_id/summary " = > " topics # show " , defaults : { summary : true } , constraints : { topic_id : / \ d+ / }
get " t/:slug/:topic_id/unsubscribe " = > " topics # unsubscribe " , constraints : { topic_id : / \ d+ / }
get " t/:topic_id/unsubscribe " = > " topics # unsubscribe " , constraints : { topic_id : / \ d+ / }
get " t/:topic_id/summary " = > " topics # show " , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
put " t/:slug/:topic_id " = > " topics # update " , constraints : { topic_id : / \ d+ / }
put " t/:slug/:topic_id/star " = > " topics # star " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/star " = > " topics # star " , constraints : { topic_id : / \ d+ / }
put " t/:slug/:topic_id/status " = > " topics # status " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/status " = > " topics # status " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/clear-pin " = > " topics # clear_pin " , constraints : { topic_id : / \ d+ / }
2014-04-10 10:56:56 +10:00
put " t/:topic_id/re-pin " = > " topics # re_pin " , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
put " t/:topic_id/mute " = > " topics # mute " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/unmute " = > " topics # unmute " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/autoclose " = > " topics # autoclose " , constraints : { topic_id : / \ d+ / }
2014-06-16 18:28:07 +02:00
put " t/:topic_id/make-banner " = > " topics # make_banner " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/remove-banner " = > " topics # remove_banner " , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
put " t/:topic_id/remove-allowed-user " = > " topics # remove_allowed_user " , constraints : { topic_id : / \ d+ / }
put " t/:topic_id/recover " = > " topics # recover " , constraints : { topic_id : / \ d+ / }
get " t/:topic_id/:post_number " = > " topics # show " , constraints : { topic_id : / \ d+ / , post_number : / \ d+ / }
2014-01-30 15:23:42 -05:00
get " t/:topic_id/last " = > " topics # show " , post_number : 99999999 , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
get " t/:slug/:topic_id.rss " = > " topics # feed " , format : :rss , constraints : { topic_id : / \ d+ / }
get " t/:slug/:topic_id " = > " topics # show " , constraints : { topic_id : / \ d+ / }
get " t/:slug/:topic_id/:post_number " = > " topics # show " , constraints : { topic_id : / \ d+ / , post_number : / \ d+ / }
2014-01-30 15:23:42 -05:00
get " t/:slug/:topic_id/last " = > " topics # show " , post_number : 99999999 , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
get " t/:topic_id/posts " = > " topics # posts " , constraints : { topic_id : / \ d+ / }
post " t/:topic_id/timings " = > " topics # timings " , constraints : { topic_id : / \ d+ / }
post " t/:topic_id/invite " = > " topics # invite " , constraints : { topic_id : / \ d+ / }
post " t/:topic_id/move-posts " = > " topics # move_posts " , constraints : { topic_id : / \ d+ / }
post " t/:topic_id/merge-topic " = > " topics # merge_topic " , constraints : { topic_id : / \ d+ / }
2014-03-27 18:28:14 -07:00
post " t/:topic_id/change-owner " = > " topics # change_post_owners " , constraints : { topic_id : / \ d+ / }
2015-07-26 00:06:49 +08:00
put " t/:topic_id/change-timestamp " = > " topics # change_timestamps " , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
delete " t/:topic_id/timings " = > " topics # destroy_timings " , constraints : { topic_id : / \ d+ / }
2015-01-12 12:10:15 +01:00
put " t/:topic_id/bookmark " = > " topics # bookmark " , constraints : { topic_id : / \ d+ / }
2015-02-19 10:58:57 +11:00
put " t/:topic_id/remove_bookmarks " = > " topics # remove_bookmarks " , constraints : { topic_id : / \ d+ / }
2013-12-24 00:50:36 +01:00
post " t/:topic_id/notifications " = > " topics # set_notifications " , constraints : { topic_id : / \ d+ / }
2014-07-11 14:34:26 -07:00
get " p/:post_id(/:user_id) " = > " posts # short_link "
2014-06-20 17:06:44 -04:00
get " /posts/:id/cooked " = > " posts # cooked "
2014-04-01 17:45:16 -04:00
get " /posts/:id/expand-embed " = > " posts # expand_embed "
2014-07-11 14:34:26 -07:00
get " /posts/:id/raw " = > " posts # markdown_id "
2014-10-18 00:48:29 +05:30
get " /posts/:id/raw-email " = > " posts # raw_email "
2014-07-11 14:34:26 -07:00
get " raw/:topic_id(/:post_number) " = > " posts # markdown_num "
2013-04-30 16:29:57 +10:00
2015-04-10 17:00:50 -04:00
resources :queued_posts , constraints : StaffConstraint . new
get 'queued-posts' = > 'queued_posts#index'
2014-05-28 01:44:37 +05:30
resources :invites do
collection do
get " upload " = > " invites # check_csv_chunk "
post " upload " = > " invites # upload_csv_chunk "
end
end
2014-10-07 00:18:56 +05:30
post " invites/reinvite " = > " invites # resend_invite "
2015-08-26 07:11:52 +05:30
post " invites/link " = > " invites # create_invite_link "
2014-07-14 21:26:26 +05:30
post " invites/disposable " = > " invites # create_disposable_invite "
get " invites/redeem/:token " = > " invites # redeem_disposable_invite "
2013-12-24 00:50:36 +01:00
delete " invites " = > " invites # destroy "
2013-02-14 11:11:13 -08:00
2014-12-22 21:47:04 +05:30
resources :export_csv do
collection do
2015-07-24 12:33:53 -04:00
post " export_entity " = > " export_csv # export_entity "
2014-12-22 21:47:04 +05:30
end
2014-12-24 14:41:41 +05:30
member do
get " " = > " export_csv # show " , constraints : { id : / [^ \/ ]+ / }
end
2014-12-22 21:47:04 +05:30
end
2013-12-24 00:50:36 +01:00
get " onebox " = > " onebox # show "
2013-02-05 14:16:51 -05:00
2013-12-24 00:50:36 +01:00
get " error " = > " forums # error "
2014-06-16 11:25:33 -07:00
get " exception " = > " list # latest "
2013-02-05 14:16:51 -05:00
2013-12-24 00:50:36 +01:00
get " message-bus/poll " = > " message_bus # poll "
2013-02-05 14:16:51 -05:00
2013-12-24 00:50:36 +01:00
get " draft " = > " draft # show "
post " draft " = > " draft # update "
delete " draft " = > " draft # destroy "
2013-02-05 14:16:51 -05:00
2014-05-19 08:46:09 +10:00
get " cdn_asset/:site/*path " = > " static # cdn_asset " , format : false
2015-08-25 11:54:23 +10:00
get " favicon/proxied " = > " static # favicon " , format : false
2013-12-24 00:50:36 +01:00
get " robots.txt " = > " robots_txt # index "
2015-09-20 23:00:30 +08:00
get " manifest.json " = > " manifest_json # index " , as : :manifest
2013-02-11 11:02:57 +11:00
2013-12-24 00:50:36 +01:00
Discourse . filters . each do | filter |
2013-07-01 20:00:06 +02:00
root to : " list # #{ filter } " , constraints : HomePageConstraint . new ( " #{ filter } " ) , :as = > " list_ #{ filter } "
2013-03-28 14:01:13 +01:00
end
# special case for categories
2013-07-01 20:00:06 +02:00
root to : " categories # index " , constraints : HomePageConstraint . new ( " categories " ) , :as = > " categories_index "
2014-01-03 19:36:49 +01:00
# special case for top
2014-01-17 23:52:06 +01:00
root to : " list # top " , constraints : HomePageConstraint . new ( " top " ) , :as = > " top_lists "
2013-02-05 14:16:51 -05:00
2014-08-29 11:28:16 -04:00
get " *url " , to : 'permalinks#show' , constraints : PermalinkConstraint . new
2013-02-05 14:16:51 -05:00
end