discourse_api 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +21 -21
- data/.travis.yml +5 -5
- data/CHANGELOG.md +105 -99
- data/Gemfile +4 -4
- data/Guardfile +5 -5
- data/LICENSE.txt +22 -22
- data/README.md +73 -73
- data/Rakefile +7 -7
- data/discourse_api.gemspec +35 -35
- data/examples/backups.rb +18 -18
- data/examples/category.rb +21 -21
- data/examples/change_topic_status.rb +33 -33
- data/examples/create_topic.rb +23 -23
- data/examples/create_user.rb +14 -14
- data/examples/dashboard.rb +13 -13
- data/examples/disposable_invite_tokens.rb +18 -18
- data/examples/example.rb +9 -9
- data/examples/groups.rb +25 -25
- data/examples/invite_users.rb +15 -15
- data/examples/post_action.rb +25 -25
- data/examples/search.rb +9 -9
- data/examples/sso.rb +14 -14
- data/examples/topic_lists.rb +15 -15
- data/examples/update_user.rb +22 -22
- data/lib/discourse_api.rb +5 -5
- data/lib/discourse_api/api/api_key.rb +31 -31
- data/lib/discourse_api/api/backups.rb +24 -24
- data/lib/discourse_api/api/badges.rb +28 -28
- data/lib/discourse_api/api/categories.rb +57 -57
- data/lib/discourse_api/api/dashboard.rb +24 -24
- data/lib/discourse_api/api/email.rb +15 -15
- data/lib/discourse_api/api/groups.rb +52 -52
- data/lib/discourse_api/api/invite.rb +17 -17
- data/lib/discourse_api/api/notifications.rb +9 -9
- data/lib/discourse_api/api/params.rb +55 -55
- data/lib/discourse_api/api/posts.rb +41 -41
- data/lib/discourse_api/api/private_messages.rb +10 -10
- data/lib/discourse_api/api/search.rb +19 -19
- data/lib/discourse_api/api/sso.rb +22 -22
- data/lib/discourse_api/api/tags.rb +10 -10
- data/lib/discourse_api/api/topics.rb +78 -78
- data/lib/discourse_api/api/users.rb +93 -85
- data/lib/discourse_api/client.rb +133 -133
- data/lib/discourse_api/error.rb +17 -17
- data/lib/discourse_api/single_sign_on.rb +110 -110
- data/lib/discourse_api/version.rb +3 -3
- data/routes.txt +203 -203
- data/spec/discourse_api/api/api_key_spec.rb +121 -121
- data/spec/discourse_api/api/backups_spec.rb +23 -23
- data/spec/discourse_api/api/badges_spec.rb +40 -40
- data/spec/discourse_api/api/categories_spec.rb +87 -87
- data/spec/discourse_api/api/email_spec.rb +39 -39
- data/spec/discourse_api/api/groups_spec.rb +94 -94
- data/spec/discourse_api/api/notifications_spec.rb +24 -24
- data/spec/discourse_api/api/params_spec.rb +32 -32
- data/spec/discourse_api/api/posts_spec.rb +41 -41
- data/spec/discourse_api/api/private_messages_spec.rb +22 -22
- data/spec/discourse_api/api/search_spec.rb +30 -30
- data/spec/discourse_api/api/sso_spec.rb +16 -16
- data/spec/discourse_api/api/topics_spec.rb +113 -113
- data/spec/discourse_api/api/users_spec.rb +255 -227
- data/spec/discourse_api/client_spec.rb +115 -115
- data/spec/fixtures/api.json +12 -12
- data/spec/fixtures/backups.json +12 -12
- data/spec/fixtures/badges.json +569 -569
- data/spec/fixtures/categories.json +72 -72
- data/spec/fixtures/category_latest_topics.json +92 -92
- data/spec/fixtures/category_topics.json +91 -91
- data/spec/fixtures/email_list_all.json +749 -749
- data/spec/fixtures/email_settings.json +13 -13
- data/spec/fixtures/generate_api_key.json +12 -12
- data/spec/fixtures/generate_master_key.json +7 -7
- data/spec/fixtures/groups.json +18 -18
- data/spec/fixtures/hot.json +113 -113
- data/spec/fixtures/latest.json +115 -115
- data/spec/fixtures/members_0.json +403 -403
- data/spec/fixtures/members_1.json +363 -363
- data/spec/fixtures/new.json +113 -113
- data/spec/fixtures/notifications.json +16 -16
- data/spec/fixtures/post.json +94 -94
- data/spec/fixtures/post_action_users.json +18 -18
- data/spec/fixtures/private_messages.json +69 -69
- data/spec/fixtures/regenerate_api_key.json +7 -7
- data/spec/fixtures/search.json +24 -24
- data/spec/fixtures/topic.json +739 -739
- data/spec/fixtures/topic_invite_user.json +3 -3
- data/spec/fixtures/topics_created_by.json +49 -49
- data/spec/fixtures/update_trust_level.json +37 -37
- data/spec/fixtures/upload_avatar.json +13 -13
- data/spec/fixtures/user.json +65 -65
- data/spec/fixtures/user_activate_success.json +3 -3
- data/spec/fixtures/user_badges.json +170 -170
- data/spec/fixtures/user_create_success.json +5 -5
- data/spec/fixtures/user_grant_admin.json +37 -37
- data/spec/fixtures/user_list.json +583 -583
- data/spec/fixtures/user_log_out_success.json +3 -3
- data/spec/fixtures/user_update_avatar_success.json +3 -3
- data/spec/fixtures/user_update_user.json +3 -3
- data/spec/fixtures/user_update_username.json +4 -4
- data/spec/spec_helper.rb +61 -61
- metadata +2 -2
data/lib/discourse_api/error.rb
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
module DiscourseApi
|
|
2
|
-
class Error < StandardError
|
|
3
|
-
attr_reader :wrapped_exception
|
|
4
|
-
|
|
5
|
-
# Initializes a new Error object
|
|
6
|
-
#
|
|
7
|
-
# @param exception [Exception, String]
|
|
8
|
-
# @return [DiscourseApi::Error]
|
|
9
|
-
def initialize(exception=$!)
|
|
10
|
-
@wrapped_exception = exception
|
|
11
|
-
exception.respond_to?(:message) ? super(exception.message) : super(exception.to_s)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
class UnauthenticatedError < StandardError
|
|
16
|
-
end
|
|
17
|
-
end
|
|
1
|
+
module DiscourseApi
|
|
2
|
+
class Error < StandardError
|
|
3
|
+
attr_reader :wrapped_exception
|
|
4
|
+
|
|
5
|
+
# Initializes a new Error object
|
|
6
|
+
#
|
|
7
|
+
# @param exception [Exception, String]
|
|
8
|
+
# @return [DiscourseApi::Error]
|
|
9
|
+
def initialize(exception=$!)
|
|
10
|
+
@wrapped_exception = exception
|
|
11
|
+
exception.respond_to?(:message) ? super(exception.message) : super(exception.to_s)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class UnauthenticatedError < StandardError
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
require 'base64'
|
|
2
|
-
require 'rack'
|
|
3
|
-
require 'openssl'
|
|
4
|
-
|
|
5
|
-
module DiscourseApi
|
|
6
|
-
class SingleSignOn
|
|
7
|
-
ACCESSORS = [:nonce, :name, :username, :email, :avatar_url, :avatar_force_update,
|
|
8
|
-
:about_me, :external_id, :return_sso_url, :admin, :moderator, :suppress_welcome_message]
|
|
9
|
-
FIXNUMS = []
|
|
10
|
-
BOOLS = [:avatar_force_update, :admin, :moderator, :suppress_welcome_message]
|
|
11
|
-
#NONCE_EXPIRY_TIME = 10.minutes # minutes is a rails method and is causing an error. Is this needed in the api?
|
|
12
|
-
|
|
13
|
-
attr_accessor(*ACCESSORS)
|
|
14
|
-
attr_accessor :sso_secret, :sso_url
|
|
15
|
-
|
|
16
|
-
def self.sso_secret
|
|
17
|
-
raise RuntimeError, "sso_secret not implemented on class, be sure to set it on instance"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.sso_url
|
|
21
|
-
raise RuntimeError, "sso_url not implemented on class, be sure to set it on instance"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def self.parse(payload, sso_secret = nil)
|
|
25
|
-
sso = new
|
|
26
|
-
sso.sso_secret = sso_secret if sso_secret
|
|
27
|
-
|
|
28
|
-
parsed = Rack::Utils.parse_query(payload)
|
|
29
|
-
if sso.sign(parsed["sso"]) != parsed["sig"]
|
|
30
|
-
diags = "\n\nsso: #{parsed["sso"]}\n\nsig: #{parsed["sig"]}\n\nexpected sig: #{sso.sign(parsed["sso"])}"
|
|
31
|
-
if parsed["sso"] =~ /[^a-zA-Z0-9=\r\n\/+]/m
|
|
32
|
-
raise RuntimeError, "The SSO field should be Base64 encoded, using only A-Z, a-z, 0-9, +, /, and = characters. Your input contains characters we don't understand as Base64, see http://en.wikipedia.org/wiki/Base64 #{diags}"
|
|
33
|
-
else
|
|
34
|
-
raise RuntimeError, "Bad signature for payload #{diags}"
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
decoded = Base64.decode64(parsed["sso"])
|
|
39
|
-
decoded_hash = Rack::Utils.parse_query(decoded)
|
|
40
|
-
|
|
41
|
-
ACCESSORS.each do |k|
|
|
42
|
-
val = decoded_hash[k.to_s]
|
|
43
|
-
val = val.to_i if FIXNUMS.include? k
|
|
44
|
-
if BOOLS.include? k
|
|
45
|
-
val = ["true", "false"].include?(val) ? val == "true" : nil
|
|
46
|
-
end
|
|
47
|
-
sso.send("#{k}=", val)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
decoded_hash.each do |k,v|
|
|
51
|
-
# 1234567
|
|
52
|
-
# custom.
|
|
53
|
-
#
|
|
54
|
-
if k[0..6] == "custom."
|
|
55
|
-
field = k[7..-1]
|
|
56
|
-
sso.custom_fields[field] = v
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
sso
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def sso_secret
|
|
64
|
-
@sso_secret || self.class.sso_secret
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def sso_url
|
|
68
|
-
@sso_url || self.class.sso_url
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def custom_fields
|
|
72
|
-
@custom_fields ||= {}
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def sign(payload)
|
|
77
|
-
OpenSSL::HMAC.hexdigest("sha256", sso_secret, payload)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def to_url(base_url=nil)
|
|
82
|
-
base = "#{base_url || sso_url}"
|
|
83
|
-
"#{base}#{base.include?('?') ? '&' : '?'}#{payload}"
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def payload
|
|
87
|
-
payload = Base64.encode64(unsigned_payload)
|
|
88
|
-
"sso=#{CGI::escape(payload)}&sig=#{sign(payload)}"
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def unsigned_payload
|
|
92
|
-
payload = {}
|
|
93
|
-
ACCESSORS.each do |k|
|
|
94
|
-
next if (val = send k) == nil
|
|
95
|
-
|
|
96
|
-
payload[k] = val
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
if @custom_fields
|
|
100
|
-
@custom_fields.each do |k,v|
|
|
101
|
-
payload["custom.#{k}"] = v.to_s
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
Rack::Utils.build_query(payload)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
end
|
|
1
|
+
require 'base64'
|
|
2
|
+
require 'rack'
|
|
3
|
+
require 'openssl'
|
|
4
|
+
|
|
5
|
+
module DiscourseApi
|
|
6
|
+
class SingleSignOn
|
|
7
|
+
ACCESSORS = [:nonce, :name, :username, :email, :avatar_url, :avatar_force_update,
|
|
8
|
+
:about_me, :external_id, :return_sso_url, :admin, :moderator, :suppress_welcome_message]
|
|
9
|
+
FIXNUMS = []
|
|
10
|
+
BOOLS = [:avatar_force_update, :admin, :moderator, :suppress_welcome_message]
|
|
11
|
+
#NONCE_EXPIRY_TIME = 10.minutes # minutes is a rails method and is causing an error. Is this needed in the api?
|
|
12
|
+
|
|
13
|
+
attr_accessor(*ACCESSORS)
|
|
14
|
+
attr_accessor :sso_secret, :sso_url
|
|
15
|
+
|
|
16
|
+
def self.sso_secret
|
|
17
|
+
raise RuntimeError, "sso_secret not implemented on class, be sure to set it on instance"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.sso_url
|
|
21
|
+
raise RuntimeError, "sso_url not implemented on class, be sure to set it on instance"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.parse(payload, sso_secret = nil)
|
|
25
|
+
sso = new
|
|
26
|
+
sso.sso_secret = sso_secret if sso_secret
|
|
27
|
+
|
|
28
|
+
parsed = Rack::Utils.parse_query(payload)
|
|
29
|
+
if sso.sign(parsed["sso"]) != parsed["sig"]
|
|
30
|
+
diags = "\n\nsso: #{parsed["sso"]}\n\nsig: #{parsed["sig"]}\n\nexpected sig: #{sso.sign(parsed["sso"])}"
|
|
31
|
+
if parsed["sso"] =~ /[^a-zA-Z0-9=\r\n\/+]/m
|
|
32
|
+
raise RuntimeError, "The SSO field should be Base64 encoded, using only A-Z, a-z, 0-9, +, /, and = characters. Your input contains characters we don't understand as Base64, see http://en.wikipedia.org/wiki/Base64 #{diags}"
|
|
33
|
+
else
|
|
34
|
+
raise RuntimeError, "Bad signature for payload #{diags}"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
decoded = Base64.decode64(parsed["sso"])
|
|
39
|
+
decoded_hash = Rack::Utils.parse_query(decoded)
|
|
40
|
+
|
|
41
|
+
ACCESSORS.each do |k|
|
|
42
|
+
val = decoded_hash[k.to_s]
|
|
43
|
+
val = val.to_i if FIXNUMS.include? k
|
|
44
|
+
if BOOLS.include? k
|
|
45
|
+
val = ["true", "false"].include?(val) ? val == "true" : nil
|
|
46
|
+
end
|
|
47
|
+
sso.send("#{k}=", val)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
decoded_hash.each do |k,v|
|
|
51
|
+
# 1234567
|
|
52
|
+
# custom.
|
|
53
|
+
#
|
|
54
|
+
if k[0..6] == "custom."
|
|
55
|
+
field = k[7..-1]
|
|
56
|
+
sso.custom_fields[field] = v
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
sso
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def sso_secret
|
|
64
|
+
@sso_secret || self.class.sso_secret
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def sso_url
|
|
68
|
+
@sso_url || self.class.sso_url
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def custom_fields
|
|
72
|
+
@custom_fields ||= {}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def sign(payload)
|
|
77
|
+
OpenSSL::HMAC.hexdigest("sha256", sso_secret, payload)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def to_url(base_url=nil)
|
|
82
|
+
base = "#{base_url || sso_url}"
|
|
83
|
+
"#{base}#{base.include?('?') ? '&' : '?'}#{payload}"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def payload
|
|
87
|
+
payload = Base64.encode64(unsigned_payload)
|
|
88
|
+
"sso=#{CGI::escape(payload)}&sig=#{sign(payload)}"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def unsigned_payload
|
|
92
|
+
payload = {}
|
|
93
|
+
ACCESSORS.each do |k|
|
|
94
|
+
next if (val = send k) == nil
|
|
95
|
+
|
|
96
|
+
payload[k] = val
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
if @custom_fields
|
|
100
|
+
@custom_fields.each do |k,v|
|
|
101
|
+
payload["custom.#{k}"] = v.to_s
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
Rack::Utils.build_query(payload)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module DiscourseApi
|
|
2
|
-
VERSION = "0.
|
|
3
|
-
end
|
|
1
|
+
module DiscourseApi
|
|
2
|
+
VERSION = "0.12.0"
|
|
3
|
+
end
|
data/routes.txt
CHANGED
|
@@ -1,203 +1,203 @@
|
|
|
1
|
-
forums GET /forums(.:format) forums#index
|
|
2
|
-
POST /forums(.:format) forums#create
|
|
3
|
-
new_forum GET /forums/new(.:format) forums#new
|
|
4
|
-
edit_forum GET /forums/:id/edit(.:format) forums#edit
|
|
5
|
-
forum GET /forums/:id(.:format) forums#show
|
|
6
|
-
PUT /forums/:id(.:format) forums#update
|
|
7
|
-
DELETE /forums/:id(.:format) forums#destroy
|
|
8
|
-
srv_status GET /srv/status(.:format) forums#status
|
|
9
|
-
admin_users_sync_sso POST /admin/users/sync_sso(.:format) admin/users#sync_sso
|
|
10
|
-
generate_key_admin_api_index POST /admin/api/generate_key(.:format) admin/api#generate_key
|
|
11
|
-
admin_api_index GET /admin/api(.:format) admin/api#index
|
|
12
|
-
email_preferences_redirect GET /email_preferences(.:format) email#preferences_redirect
|
|
13
|
-
email_unsubscribe GET /email/unsubscribe/:key(.:format) email#unsubscribe
|
|
14
|
-
email_resubscribe POST /email/resubscribe/:key(.:format) email#resubscribe
|
|
15
|
-
forgot_password_session_index POST /session/forgot_password(.:format) session#forgot_password {:id=>/[A-Za-z0-9\_]+/}
|
|
16
|
-
session_index POST /session(.:format) session#create {:id=>/[A-Za-z0-9\_]+/}
|
|
17
|
-
session DELETE /session/:id(.:format) session#destroy {:id=>/[A-Za-z0-9\_]+/}
|
|
18
|
-
session_csrf GET /session/csrf(.:format) session#csrf
|
|
19
|
-
GET /composer-messages(.:format) composer_messages#index
|
|
20
|
-
check_username_users GET /users/check_username(.:format) users#check_username
|
|
21
|
-
is_local_username_users GET /users/is_local_username(.:format) users#is_local_username
|
|
22
|
-
users GET /users(.:format) users#index
|
|
23
|
-
POST /users(.:format) users#create
|
|
24
|
-
new_user GET /users/new(.:format) users#new
|
|
25
|
-
edit_user GET /users/:id/edit(.:format) users#edit
|
|
26
|
-
user DELETE /users/:id(.:format) users#destroy
|
|
27
|
-
static_index GET /static(.:format) static#index
|
|
28
|
-
POST /static(.:format) static#create
|
|
29
|
-
new_static GET /static/new(.:format) static#new
|
|
30
|
-
edit_static GET /static/:id/edit(.:format) static#edit
|
|
31
|
-
static GET /static/:id(.:format) static#show
|
|
32
|
-
PUT /static/:id(.:format) static#update
|
|
33
|
-
DELETE /static/:id(.:format) static#destroy
|
|
34
|
-
login POST /login(.:format) static#enter
|
|
35
|
-
GET /login(.:format) static#show {:id=>"login"}
|
|
36
|
-
faq GET /faq(.:format) static#show {:id=>"faq"}
|
|
37
|
-
tos GET /tos(.:format) static#show {:id=>"tos"}
|
|
38
|
-
privacy GET /privacy(.:format) static#show {:id=>"privacy"}
|
|
39
|
-
users_search_users GET /users/search/users(.:format) users#search_users
|
|
40
|
-
GET /users/password-reset/:token(.:format) users#password_reset
|
|
41
|
-
PUT /users/password-reset/:token(.:format) users#password_reset
|
|
42
|
-
GET /users/activate-account/:token(.:format) users#activate_account
|
|
43
|
-
GET /users/authorize-email/:token(.:format) users#authorize_email
|
|
44
|
-
users_hp GET /users/hp(.:format) users#get_honeypot_value
|
|
45
|
-
user_preferences GET /user_preferences(.:format) users#user_preferences_redirect
|
|
46
|
-
GET /users/:username/private-messages(.:format) user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
47
|
-
GET /users/:username/private-messages/:filter(.:format) user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
48
|
-
GET /users/:username(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
49
|
-
PUT /users/:username(.:format) users#update {:username=>/[A-Za-z0-9\_]+/}
|
|
50
|
-
email_preferences GET /users/:username/preferences(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
51
|
-
GET /users/:username/preferences/email(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
52
|
-
PUT /users/:username/preferences/email(.:format) users#change_email {:username=>/[A-Za-z0-9\_]+/}
|
|
53
|
-
GET /users/:username/preferences/about-me(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
54
|
-
GET /users/:username/preferences/username(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
55
|
-
PUT /users/:username/preferences/username(.:format) users#username {:username=>/[A-Za-z0-9\_]+/}
|
|
56
|
-
GET /users/:username/avatar(/:size)(.:format) users#avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
57
|
-
POST /users/:username/preferences/avatar(.:format) users#upload_avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
58
|
-
PUT /users/:username/preferences/avatar/toggle(.:format) users#toggle_avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
59
|
-
GET /users/:username/invited(.:format) users#invited {:username=>/[A-Za-z0-9\_]+/}
|
|
60
|
-
POST /users/:username/send_activation_email(.:format) users#send_activation_email {:username=>/[A-Za-z0-9\_]+/}
|
|
61
|
-
GET /users/:username/activity(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
62
|
-
GET /users/:username/activity/:filter(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
63
|
-
GET /uploads/:site/:id/:sha.:extension(.:format) uploads#show {:site=>/\w+/, :id=>/\d+/, :sha=>/[a-z0-9]{15,16}/i, :extension=>/\w{2,}/}
|
|
64
|
-
uploads POST /uploads(.:format) uploads#create
|
|
65
|
-
GET /posts/by_number/:topic_id/:post_number(.:format) posts#by_number
|
|
66
|
-
GET /posts/:id/reply-history(.:format) posts#reply_history
|
|
67
|
-
post_versions GET /posts/:post_id/versions(.:format) posts#versions
|
|
68
|
-
post_bookmark PUT /posts/:post_id/bookmark(.:format) posts#bookmark
|
|
69
|
-
post_replies GET /posts/:post_id/replies(.:format) posts#replies
|
|
70
|
-
post_recover PUT /posts/:post_id/recover(.:format) posts#recover
|
|
71
|
-
destroy_many_posts DELETE /posts/destroy_many(.:format) posts#destroy_many
|
|
72
|
-
posts GET /posts(.:format) posts#index
|
|
73
|
-
POST /posts(.:format) posts#create
|
|
74
|
-
new_post GET /posts/new(.:format) posts#new
|
|
75
|
-
edit_post GET /posts/:id/edit(.:format) posts#edit
|
|
76
|
-
post GET /posts/:id(.:format) posts#show
|
|
77
|
-
PUT /posts/:id(.:format) posts#update
|
|
78
|
-
DELETE /posts/:id(.:format) posts#destroy
|
|
79
|
-
GET /p/:post_id/:user_id(.:format) posts#short_link
|
|
80
|
-
notifications GET /notifications(.:format) notifications#index
|
|
81
|
-
POST /notifications(.:format) notifications#create
|
|
82
|
-
new_notification GET /notifications/new(.:format) notifications#new
|
|
83
|
-
edit_notification GET /notifications/:id/edit(.:format) notifications#edit
|
|
84
|
-
notification GET /notifications/:id(.:format) notifications#show
|
|
85
|
-
PUT /notifications/:id(.:format) notifications#update
|
|
86
|
-
DELETE /notifications/:id(.:format) notifications#destroy
|
|
87
|
-
GET|POST /auth/:provider/callback(.:format) users/omniauth_callbacks#complete
|
|
88
|
-
auth_failure GET|POST /auth/failure(.:format) users/omniauth_callbacks#failure
|
|
89
|
-
track_clicks GET /clicks/track(.:format) clicks#track
|
|
90
|
-
clicks GET /clicks(.:format) clicks#index
|
|
91
|
-
POST /clicks(.:format) clicks#create
|
|
92
|
-
new_click GET /clicks/new(.:format) clicks#new
|
|
93
|
-
edit_click GET /clicks/:id/edit(.:format) clicks#edit
|
|
94
|
-
click GET /clicks/:id(.:format) clicks#show
|
|
95
|
-
PUT /clicks/:id(.:format) clicks#update
|
|
96
|
-
DELETE /clicks/:id(.:format) clicks#destroy
|
|
97
|
-
excerpt GET /excerpt(.:format) excerpt#show
|
|
98
|
-
users_post_actions GET /post_actions/users(.:format) post_actions#users
|
|
99
|
-
clear_flags_post_actions POST /post_actions/clear_flags(.:format) post_actions#clear_flags
|
|
100
|
-
post_actions GET /post_actions(.:format) post_actions#index
|
|
101
|
-
POST /post_actions(.:format) post_actions#create
|
|
102
|
-
new_post_action GET /post_actions/new(.:format) post_actions#new
|
|
103
|
-
edit_post_action GET /post_actions/:id/edit(.:format) post_actions#edit
|
|
104
|
-
post_action GET /post_actions/:id(.:format) post_actions#show
|
|
105
|
-
PUT /post_actions/:id(.:format) post_actions#update
|
|
106
|
-
DELETE /post_actions/:id(.:format) post_actions#destroy
|
|
107
|
-
user_actions GET /user_actions(.:format) user_actions#index
|
|
108
|
-
POST /user_actions(.:format) user_actions#create
|
|
109
|
-
new_user_action GET /user_actions/new(.:format) user_actions#new
|
|
110
|
-
edit_user_action GET /user_actions/:id/edit(.:format) user_actions#edit
|
|
111
|
-
user_action GET /user_actions/:id(.:format) user_actions#show
|
|
112
|
-
PUT /user_actions/:id(.:format) user_actions#update
|
|
113
|
-
DELETE /user_actions/:id(.:format) user_actions#destroy
|
|
114
|
-
categories GET /categories(.:format) categories#index
|
|
115
|
-
POST /categories(.:format) categories#create
|
|
116
|
-
new_category GET /categories/new(.:format) categories#new
|
|
117
|
-
edit_category GET /categories/:id/edit(.:format) categories#edit
|
|
118
|
-
category PUT /categories/:id(.:format) categories#update
|
|
119
|
-
DELETE /categories/:id(.:format) categories#destroy
|
|
120
|
-
GET /category/:id/show(.:format) categories#show
|
|
121
|
-
category_feed GET /category/:category.rss(.:format) list#category_feed {:format=>:rss}
|
|
122
|
-
category_list GET /category/:category(.:format) list#category
|
|
123
|
-
category_list_more GET /category/:category/more(.:format) list#category
|
|
124
|
-
popular GET /popular(.:format) list#popular_redirect
|
|
125
|
-
popular_more GET /popular/more(.:format) list#popular_redirect
|
|
126
|
-
latest_feed GET /latest.rss(.:format) list#latest_feed {:format=>:rss, :filter=>:latest}
|
|
127
|
-
hot_feed GET /hot.rss(.:format) list#hot_feed {:format=>:rss, :filter=>:hot}
|
|
128
|
-
latest GET /latest(.:format) list#latest
|
|
129
|
-
latest_more GET /latest/more(.:format) list#latest
|
|
130
|
-
hot GET /hot(.:format) list#hot
|
|
131
|
-
hot_more GET /hot/more(.:format) list#hot
|
|
132
|
-
favorited GET /favorited(.:format) list#favorited
|
|
133
|
-
favorited_more GET /favorited/more(.:format) list#favorited
|
|
134
|
-
read GET /read(.:format) list#read
|
|
135
|
-
read_more GET /read/more(.:format) list#read
|
|
136
|
-
posted GET /posted(.:format) list#posted
|
|
137
|
-
posted_more GET /posted/more(.:format) list#posted
|
|
138
|
-
unread GET /unread(.:format) list#unread
|
|
139
|
-
unread_more GET /unread/more(.:format) list#unread
|
|
140
|
-
new GET /new(.:format) list#new
|
|
141
|
-
new_more GET /new/more(.:format) list#new
|
|
142
|
-
search GET /search(.:format) search#query
|
|
143
|
-
GET /t/:id(.:format) topics#show
|
|
144
|
-
DELETE /t/:id(.:format) topics#destroy
|
|
145
|
-
PUT /t/:id(.:format) topics#update
|
|
146
|
-
t POST /t(.:format) topics#create
|
|
147
|
-
topics_timings POST /topics/timings(.:format) topics#timings
|
|
148
|
-
topics_similar_to GET /topics/similar_to(.:format) topics#similar_to
|
|
149
|
-
topics_by GET /topics/created-by/:username(.:format) list#topics_by {:username=>/[A-Za-z0-9\_]+/}
|
|
150
|
-
topics_private_messages GET /topics/private-messages/:username(.:format) list#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
151
|
-
topics_private_messages_sent GET /topics/private-messages-sent/:username(.:format) list#private_messages_sent {:username=>/[A-Za-z0-9\_]+/}
|
|
152
|
-
topics_private_messages_unread GET /topics/private-messages-unread/:username(.:format) list#private_messages_unread {:username=>/[A-Za-z0-9\_]+/}
|
|
153
|
-
GET /t/:slug/:topic_id/wordpress(.:format) topics#wordpress {:topic_id=>/\d+/}
|
|
154
|
-
GET /t/:slug/:topic_id/moderator-liked(.:format) topics#moderator_liked {:topic_id=>/\d+/}
|
|
155
|
-
GET /t/:topic_id/wordpress(.:format) topics#wordpress {:topic_id=>/\d+/}
|
|
156
|
-
GET /t/:slug/:topic_id/best_of(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/, :best_of=>true}
|
|
157
|
-
GET /t/:topic_id/best_of(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
158
|
-
PUT /t/:slug/:topic_id(.:format) topics#update {:topic_id=>/\d+/}
|
|
159
|
-
PUT /t/:slug/:topic_id/star(.:format) topics#star {:topic_id=>/\d+/}
|
|
160
|
-
PUT /t/:topic_id/star(.:format) topics#star {:topic_id=>/\d+/}
|
|
161
|
-
PUT /t/:slug/:topic_id/status(.:format) topics#status {:topic_id=>/\d+/}
|
|
162
|
-
PUT /t/:topic_id/status(.:format) topics#status {:topic_id=>/\d+/}
|
|
163
|
-
PUT /t/:topic_id/clear-pin(.:format) topics#clear_pin {:topic_id=>/\d+/}
|
|
164
|
-
PUT /t/:topic_id/mute(.:format) topics#mute {:topic_id=>/\d+/}
|
|
165
|
-
PUT /t/:topic_id/unmute(.:format) topics#unmute {:topic_id=>/\d+/}
|
|
166
|
-
PUT /t/:topic_id/autoclose(.:format) topics#autoclose {:topic_id=>/\d+/}
|
|
167
|
-
PUT /t/:topic_id/remove-allowed-user(.:format) topics#remove_allowed_user {:topic_id=>/\d+/}
|
|
168
|
-
PUT /t/:topic_id/recover(.:format) topics#recover {:topic_id=>/\d+/}
|
|
169
|
-
GET /t/:topic_id/:post_number(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
170
|
-
GET /t/:slug/:topic_id.rss(.:format) topics#feed {:topic_id=>/\d+/, :format=>:rss}
|
|
171
|
-
GET /t/:slug/:topic_id(.:format) topics#show {:topic_id=>/\d+/}
|
|
172
|
-
GET /t/:slug/:topic_id/:post_number(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
173
|
-
GET /t/:topic_id/posts(.:format) topics#posts {:topic_id=>/\d+/}
|
|
174
|
-
POST /t/:topic_id/timings(.:format) topics#timings {:topic_id=>/\d+/}
|
|
175
|
-
POST /t/:topic_id/invite(.:format) topics#invite {:topic_id=>/\d+/}
|
|
176
|
-
POST /t/:topic_id/move-posts(.:format) topics#move_posts {:topic_id=>/\d+/}
|
|
177
|
-
POST /t/:topic_id/merge-topic(.:format) topics#merge_topic {:topic_id=>/\d+/}
|
|
178
|
-
DELETE /t/:topic_id/timings(.:format) topics#destroy_timings {:topic_id=>/\d+/}
|
|
179
|
-
POST /t/:topic_id/notifications(.:format) topics#set_notifications {:topic_id=>/\d+/}
|
|
180
|
-
GET /raw/:topic_id(/:post_number)(.:format) posts#markdown
|
|
181
|
-
invites GET /invites(.:format) invites#index
|
|
182
|
-
POST /invites(.:format) invites#create
|
|
183
|
-
new_invite GET /invites/new(.:format) invites#new
|
|
184
|
-
edit_invite GET /invites/:id/edit(.:format) invites#edit
|
|
185
|
-
invite GET /invites/:id(.:format) invites#show
|
|
186
|
-
PUT /invites/:id(.:format) invites#update
|
|
187
|
-
DELETE /invites/:id(.:format) invites#destroy
|
|
188
|
-
DELETE /invites(.:format) invites#destroy
|
|
189
|
-
onebox GET /onebox(.:format) onebox#show
|
|
190
|
-
error GET /error(.:format) forums#error
|
|
191
|
-
GET /message-bus/poll(.:format) message_bus#poll
|
|
192
|
-
draft GET /draft(.:format) draft#show
|
|
193
|
-
POST /draft(.:format) draft#update
|
|
194
|
-
DELETE /draft(.:format) draft#destroy
|
|
195
|
-
GET /robots.txt(.:format) robots_txt#index
|
|
196
|
-
list_latest / list#latest
|
|
197
|
-
list_hot / list#hot
|
|
198
|
-
list_unread / list#unread
|
|
199
|
-
list_new / list#new
|
|
200
|
-
list_favorited / list#favorited
|
|
201
|
-
list_read / list#read
|
|
202
|
-
list_posted / list#posted
|
|
203
|
-
categories_index / categories#index
|
|
1
|
+
forums GET /forums(.:format) forums#index
|
|
2
|
+
POST /forums(.:format) forums#create
|
|
3
|
+
new_forum GET /forums/new(.:format) forums#new
|
|
4
|
+
edit_forum GET /forums/:id/edit(.:format) forums#edit
|
|
5
|
+
forum GET /forums/:id(.:format) forums#show
|
|
6
|
+
PUT /forums/:id(.:format) forums#update
|
|
7
|
+
DELETE /forums/:id(.:format) forums#destroy
|
|
8
|
+
srv_status GET /srv/status(.:format) forums#status
|
|
9
|
+
admin_users_sync_sso POST /admin/users/sync_sso(.:format) admin/users#sync_sso
|
|
10
|
+
generate_key_admin_api_index POST /admin/api/generate_key(.:format) admin/api#generate_key
|
|
11
|
+
admin_api_index GET /admin/api(.:format) admin/api#index
|
|
12
|
+
email_preferences_redirect GET /email_preferences(.:format) email#preferences_redirect
|
|
13
|
+
email_unsubscribe GET /email/unsubscribe/:key(.:format) email#unsubscribe
|
|
14
|
+
email_resubscribe POST /email/resubscribe/:key(.:format) email#resubscribe
|
|
15
|
+
forgot_password_session_index POST /session/forgot_password(.:format) session#forgot_password {:id=>/[A-Za-z0-9\_]+/}
|
|
16
|
+
session_index POST /session(.:format) session#create {:id=>/[A-Za-z0-9\_]+/}
|
|
17
|
+
session DELETE /session/:id(.:format) session#destroy {:id=>/[A-Za-z0-9\_]+/}
|
|
18
|
+
session_csrf GET /session/csrf(.:format) session#csrf
|
|
19
|
+
GET /composer-messages(.:format) composer_messages#index
|
|
20
|
+
check_username_users GET /users/check_username(.:format) users#check_username
|
|
21
|
+
is_local_username_users GET /users/is_local_username(.:format) users#is_local_username
|
|
22
|
+
users GET /users(.:format) users#index
|
|
23
|
+
POST /users(.:format) users#create
|
|
24
|
+
new_user GET /users/new(.:format) users#new
|
|
25
|
+
edit_user GET /users/:id/edit(.:format) users#edit
|
|
26
|
+
user DELETE /users/:id(.:format) users#destroy
|
|
27
|
+
static_index GET /static(.:format) static#index
|
|
28
|
+
POST /static(.:format) static#create
|
|
29
|
+
new_static GET /static/new(.:format) static#new
|
|
30
|
+
edit_static GET /static/:id/edit(.:format) static#edit
|
|
31
|
+
static GET /static/:id(.:format) static#show
|
|
32
|
+
PUT /static/:id(.:format) static#update
|
|
33
|
+
DELETE /static/:id(.:format) static#destroy
|
|
34
|
+
login POST /login(.:format) static#enter
|
|
35
|
+
GET /login(.:format) static#show {:id=>"login"}
|
|
36
|
+
faq GET /faq(.:format) static#show {:id=>"faq"}
|
|
37
|
+
tos GET /tos(.:format) static#show {:id=>"tos"}
|
|
38
|
+
privacy GET /privacy(.:format) static#show {:id=>"privacy"}
|
|
39
|
+
users_search_users GET /users/search/users(.:format) users#search_users
|
|
40
|
+
GET /users/password-reset/:token(.:format) users#password_reset
|
|
41
|
+
PUT /users/password-reset/:token(.:format) users#password_reset
|
|
42
|
+
GET /users/activate-account/:token(.:format) users#activate_account
|
|
43
|
+
GET /users/authorize-email/:token(.:format) users#authorize_email
|
|
44
|
+
users_hp GET /users/hp(.:format) users#get_honeypot_value
|
|
45
|
+
user_preferences GET /user_preferences(.:format) users#user_preferences_redirect
|
|
46
|
+
GET /users/:username/private-messages(.:format) user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
47
|
+
GET /users/:username/private-messages/:filter(.:format) user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
48
|
+
GET /users/:username(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
49
|
+
PUT /users/:username(.:format) users#update {:username=>/[A-Za-z0-9\_]+/}
|
|
50
|
+
email_preferences GET /users/:username/preferences(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
51
|
+
GET /users/:username/preferences/email(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
52
|
+
PUT /users/:username/preferences/email(.:format) users#change_email {:username=>/[A-Za-z0-9\_]+/}
|
|
53
|
+
GET /users/:username/preferences/about-me(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
54
|
+
GET /users/:username/preferences/username(.:format) users#preferences {:username=>/[A-Za-z0-9\_]+/}
|
|
55
|
+
PUT /users/:username/preferences/username(.:format) users#username {:username=>/[A-Za-z0-9\_]+/}
|
|
56
|
+
GET /users/:username/avatar(/:size)(.:format) users#avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
57
|
+
POST /users/:username/preferences/avatar(.:format) users#upload_avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
58
|
+
PUT /users/:username/preferences/avatar/toggle(.:format) users#toggle_avatar {:username=>/[A-Za-z0-9\_]+/}
|
|
59
|
+
GET /users/:username/invited(.:format) users#invited {:username=>/[A-Za-z0-9\_]+/}
|
|
60
|
+
POST /users/:username/send_activation_email(.:format) users#send_activation_email {:username=>/[A-Za-z0-9\_]+/}
|
|
61
|
+
GET /users/:username/activity(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
62
|
+
GET /users/:username/activity/:filter(.:format) users#show {:username=>/[A-Za-z0-9\_]+/}
|
|
63
|
+
GET /uploads/:site/:id/:sha.:extension(.:format) uploads#show {:site=>/\w+/, :id=>/\d+/, :sha=>/[a-z0-9]{15,16}/i, :extension=>/\w{2,}/}
|
|
64
|
+
uploads POST /uploads(.:format) uploads#create
|
|
65
|
+
GET /posts/by_number/:topic_id/:post_number(.:format) posts#by_number
|
|
66
|
+
GET /posts/:id/reply-history(.:format) posts#reply_history
|
|
67
|
+
post_versions GET /posts/:post_id/versions(.:format) posts#versions
|
|
68
|
+
post_bookmark PUT /posts/:post_id/bookmark(.:format) posts#bookmark
|
|
69
|
+
post_replies GET /posts/:post_id/replies(.:format) posts#replies
|
|
70
|
+
post_recover PUT /posts/:post_id/recover(.:format) posts#recover
|
|
71
|
+
destroy_many_posts DELETE /posts/destroy_many(.:format) posts#destroy_many
|
|
72
|
+
posts GET /posts(.:format) posts#index
|
|
73
|
+
POST /posts(.:format) posts#create
|
|
74
|
+
new_post GET /posts/new(.:format) posts#new
|
|
75
|
+
edit_post GET /posts/:id/edit(.:format) posts#edit
|
|
76
|
+
post GET /posts/:id(.:format) posts#show
|
|
77
|
+
PUT /posts/:id(.:format) posts#update
|
|
78
|
+
DELETE /posts/:id(.:format) posts#destroy
|
|
79
|
+
GET /p/:post_id/:user_id(.:format) posts#short_link
|
|
80
|
+
notifications GET /notifications(.:format) notifications#index
|
|
81
|
+
POST /notifications(.:format) notifications#create
|
|
82
|
+
new_notification GET /notifications/new(.:format) notifications#new
|
|
83
|
+
edit_notification GET /notifications/:id/edit(.:format) notifications#edit
|
|
84
|
+
notification GET /notifications/:id(.:format) notifications#show
|
|
85
|
+
PUT /notifications/:id(.:format) notifications#update
|
|
86
|
+
DELETE /notifications/:id(.:format) notifications#destroy
|
|
87
|
+
GET|POST /auth/:provider/callback(.:format) users/omniauth_callbacks#complete
|
|
88
|
+
auth_failure GET|POST /auth/failure(.:format) users/omniauth_callbacks#failure
|
|
89
|
+
track_clicks GET /clicks/track(.:format) clicks#track
|
|
90
|
+
clicks GET /clicks(.:format) clicks#index
|
|
91
|
+
POST /clicks(.:format) clicks#create
|
|
92
|
+
new_click GET /clicks/new(.:format) clicks#new
|
|
93
|
+
edit_click GET /clicks/:id/edit(.:format) clicks#edit
|
|
94
|
+
click GET /clicks/:id(.:format) clicks#show
|
|
95
|
+
PUT /clicks/:id(.:format) clicks#update
|
|
96
|
+
DELETE /clicks/:id(.:format) clicks#destroy
|
|
97
|
+
excerpt GET /excerpt(.:format) excerpt#show
|
|
98
|
+
users_post_actions GET /post_actions/users(.:format) post_actions#users
|
|
99
|
+
clear_flags_post_actions POST /post_actions/clear_flags(.:format) post_actions#clear_flags
|
|
100
|
+
post_actions GET /post_actions(.:format) post_actions#index
|
|
101
|
+
POST /post_actions(.:format) post_actions#create
|
|
102
|
+
new_post_action GET /post_actions/new(.:format) post_actions#new
|
|
103
|
+
edit_post_action GET /post_actions/:id/edit(.:format) post_actions#edit
|
|
104
|
+
post_action GET /post_actions/:id(.:format) post_actions#show
|
|
105
|
+
PUT /post_actions/:id(.:format) post_actions#update
|
|
106
|
+
DELETE /post_actions/:id(.:format) post_actions#destroy
|
|
107
|
+
user_actions GET /user_actions(.:format) user_actions#index
|
|
108
|
+
POST /user_actions(.:format) user_actions#create
|
|
109
|
+
new_user_action GET /user_actions/new(.:format) user_actions#new
|
|
110
|
+
edit_user_action GET /user_actions/:id/edit(.:format) user_actions#edit
|
|
111
|
+
user_action GET /user_actions/:id(.:format) user_actions#show
|
|
112
|
+
PUT /user_actions/:id(.:format) user_actions#update
|
|
113
|
+
DELETE /user_actions/:id(.:format) user_actions#destroy
|
|
114
|
+
categories GET /categories(.:format) categories#index
|
|
115
|
+
POST /categories(.:format) categories#create
|
|
116
|
+
new_category GET /categories/new(.:format) categories#new
|
|
117
|
+
edit_category GET /categories/:id/edit(.:format) categories#edit
|
|
118
|
+
category PUT /categories/:id(.:format) categories#update
|
|
119
|
+
DELETE /categories/:id(.:format) categories#destroy
|
|
120
|
+
GET /category/:id/show(.:format) categories#show
|
|
121
|
+
category_feed GET /category/:category.rss(.:format) list#category_feed {:format=>:rss}
|
|
122
|
+
category_list GET /category/:category(.:format) list#category
|
|
123
|
+
category_list_more GET /category/:category/more(.:format) list#category
|
|
124
|
+
popular GET /popular(.:format) list#popular_redirect
|
|
125
|
+
popular_more GET /popular/more(.:format) list#popular_redirect
|
|
126
|
+
latest_feed GET /latest.rss(.:format) list#latest_feed {:format=>:rss, :filter=>:latest}
|
|
127
|
+
hot_feed GET /hot.rss(.:format) list#hot_feed {:format=>:rss, :filter=>:hot}
|
|
128
|
+
latest GET /latest(.:format) list#latest
|
|
129
|
+
latest_more GET /latest/more(.:format) list#latest
|
|
130
|
+
hot GET /hot(.:format) list#hot
|
|
131
|
+
hot_more GET /hot/more(.:format) list#hot
|
|
132
|
+
favorited GET /favorited(.:format) list#favorited
|
|
133
|
+
favorited_more GET /favorited/more(.:format) list#favorited
|
|
134
|
+
read GET /read(.:format) list#read
|
|
135
|
+
read_more GET /read/more(.:format) list#read
|
|
136
|
+
posted GET /posted(.:format) list#posted
|
|
137
|
+
posted_more GET /posted/more(.:format) list#posted
|
|
138
|
+
unread GET /unread(.:format) list#unread
|
|
139
|
+
unread_more GET /unread/more(.:format) list#unread
|
|
140
|
+
new GET /new(.:format) list#new
|
|
141
|
+
new_more GET /new/more(.:format) list#new
|
|
142
|
+
search GET /search(.:format) search#query
|
|
143
|
+
GET /t/:id(.:format) topics#show
|
|
144
|
+
DELETE /t/:id(.:format) topics#destroy
|
|
145
|
+
PUT /t/:id(.:format) topics#update
|
|
146
|
+
t POST /t(.:format) topics#create
|
|
147
|
+
topics_timings POST /topics/timings(.:format) topics#timings
|
|
148
|
+
topics_similar_to GET /topics/similar_to(.:format) topics#similar_to
|
|
149
|
+
topics_by GET /topics/created-by/:username(.:format) list#topics_by {:username=>/[A-Za-z0-9\_]+/}
|
|
150
|
+
topics_private_messages GET /topics/private-messages/:username(.:format) list#private_messages {:username=>/[A-Za-z0-9\_]+/}
|
|
151
|
+
topics_private_messages_sent GET /topics/private-messages-sent/:username(.:format) list#private_messages_sent {:username=>/[A-Za-z0-9\_]+/}
|
|
152
|
+
topics_private_messages_unread GET /topics/private-messages-unread/:username(.:format) list#private_messages_unread {:username=>/[A-Za-z0-9\_]+/}
|
|
153
|
+
GET /t/:slug/:topic_id/wordpress(.:format) topics#wordpress {:topic_id=>/\d+/}
|
|
154
|
+
GET /t/:slug/:topic_id/moderator-liked(.:format) topics#moderator_liked {:topic_id=>/\d+/}
|
|
155
|
+
GET /t/:topic_id/wordpress(.:format) topics#wordpress {:topic_id=>/\d+/}
|
|
156
|
+
GET /t/:slug/:topic_id/best_of(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/, :best_of=>true}
|
|
157
|
+
GET /t/:topic_id/best_of(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
158
|
+
PUT /t/:slug/:topic_id(.:format) topics#update {:topic_id=>/\d+/}
|
|
159
|
+
PUT /t/:slug/:topic_id/star(.:format) topics#star {:topic_id=>/\d+/}
|
|
160
|
+
PUT /t/:topic_id/star(.:format) topics#star {:topic_id=>/\d+/}
|
|
161
|
+
PUT /t/:slug/:topic_id/status(.:format) topics#status {:topic_id=>/\d+/}
|
|
162
|
+
PUT /t/:topic_id/status(.:format) topics#status {:topic_id=>/\d+/}
|
|
163
|
+
PUT /t/:topic_id/clear-pin(.:format) topics#clear_pin {:topic_id=>/\d+/}
|
|
164
|
+
PUT /t/:topic_id/mute(.:format) topics#mute {:topic_id=>/\d+/}
|
|
165
|
+
PUT /t/:topic_id/unmute(.:format) topics#unmute {:topic_id=>/\d+/}
|
|
166
|
+
PUT /t/:topic_id/autoclose(.:format) topics#autoclose {:topic_id=>/\d+/}
|
|
167
|
+
PUT /t/:topic_id/remove-allowed-user(.:format) topics#remove_allowed_user {:topic_id=>/\d+/}
|
|
168
|
+
PUT /t/:topic_id/recover(.:format) topics#recover {:topic_id=>/\d+/}
|
|
169
|
+
GET /t/:topic_id/:post_number(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
170
|
+
GET /t/:slug/:topic_id.rss(.:format) topics#feed {:topic_id=>/\d+/, :format=>:rss}
|
|
171
|
+
GET /t/:slug/:topic_id(.:format) topics#show {:topic_id=>/\d+/}
|
|
172
|
+
GET /t/:slug/:topic_id/:post_number(.:format) topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
|
|
173
|
+
GET /t/:topic_id/posts(.:format) topics#posts {:topic_id=>/\d+/}
|
|
174
|
+
POST /t/:topic_id/timings(.:format) topics#timings {:topic_id=>/\d+/}
|
|
175
|
+
POST /t/:topic_id/invite(.:format) topics#invite {:topic_id=>/\d+/}
|
|
176
|
+
POST /t/:topic_id/move-posts(.:format) topics#move_posts {:topic_id=>/\d+/}
|
|
177
|
+
POST /t/:topic_id/merge-topic(.:format) topics#merge_topic {:topic_id=>/\d+/}
|
|
178
|
+
DELETE /t/:topic_id/timings(.:format) topics#destroy_timings {:topic_id=>/\d+/}
|
|
179
|
+
POST /t/:topic_id/notifications(.:format) topics#set_notifications {:topic_id=>/\d+/}
|
|
180
|
+
GET /raw/:topic_id(/:post_number)(.:format) posts#markdown
|
|
181
|
+
invites GET /invites(.:format) invites#index
|
|
182
|
+
POST /invites(.:format) invites#create
|
|
183
|
+
new_invite GET /invites/new(.:format) invites#new
|
|
184
|
+
edit_invite GET /invites/:id/edit(.:format) invites#edit
|
|
185
|
+
invite GET /invites/:id(.:format) invites#show
|
|
186
|
+
PUT /invites/:id(.:format) invites#update
|
|
187
|
+
DELETE /invites/:id(.:format) invites#destroy
|
|
188
|
+
DELETE /invites(.:format) invites#destroy
|
|
189
|
+
onebox GET /onebox(.:format) onebox#show
|
|
190
|
+
error GET /error(.:format) forums#error
|
|
191
|
+
GET /message-bus/poll(.:format) message_bus#poll
|
|
192
|
+
draft GET /draft(.:format) draft#show
|
|
193
|
+
POST /draft(.:format) draft#update
|
|
194
|
+
DELETE /draft(.:format) draft#destroy
|
|
195
|
+
GET /robots.txt(.:format) robots_txt#index
|
|
196
|
+
list_latest / list#latest
|
|
197
|
+
list_hot / list#hot
|
|
198
|
+
list_unread / list#unread
|
|
199
|
+
list_new / list#new
|
|
200
|
+
list_favorited / list#favorited
|
|
201
|
+
list_read / list#read
|
|
202
|
+
list_posted / list#posted
|
|
203
|
+
categories_index / categories#index
|