mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 05:01:14 +08:00
FEATURE: new 'Discourse-Render' HTTP header
This commit is contained in:
@ -102,6 +102,13 @@ class ApplicationController < ActionController::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def set_layout
|
def set_layout
|
||||||
|
case request.headers["Discourse-Render"]
|
||||||
|
when "desktop"
|
||||||
|
return "application"
|
||||||
|
when "crawler"
|
||||||
|
return "crawler"
|
||||||
|
end
|
||||||
|
|
||||||
use_crawler_layout? ? 'crawler' : 'application'
|
use_crawler_layout? ? 'crawler' : 'application'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -12,9 +12,10 @@ module Middleware
|
|||||||
end
|
end
|
||||||
|
|
||||||
class Helper
|
class Helper
|
||||||
USER_AGENT = "HTTP_USER_AGENT"
|
RACK_SESSION = "rack.session"
|
||||||
RACK_SESSION = "rack.session"
|
USER_AGENT = "HTTP_USER_AGENT"
|
||||||
ACCEPT_ENCODING = "HTTP_ACCEPT_ENCODING"
|
ACCEPT_ENCODING = "HTTP_ACCEPT_ENCODING"
|
||||||
|
DISCOURSE_RENDER = "HTTP_DISCOURSE_RENDER"
|
||||||
|
|
||||||
def initialize(env)
|
def initialize(env)
|
||||||
@env = env
|
@env = env
|
||||||
@ -28,7 +29,7 @@ module Middleware
|
|||||||
!@request.path.ends_with?('srv/status') &&
|
!@request.path.ends_with?('srv/status') &&
|
||||||
@request[Auth::DefaultCurrentUserProvider::API_KEY].nil? &&
|
@request[Auth::DefaultCurrentUserProvider::API_KEY].nil? &&
|
||||||
@env[Auth::DefaultCurrentUserProvider::USER_API_KEY].nil? &&
|
@env[Auth::DefaultCurrentUserProvider::USER_API_KEY].nil? &&
|
||||||
CrawlerDetection.is_blocked_crawler?(@request.env['HTTP_USER_AGENT'])
|
CrawlerDetection.is_blocked_crawler?(@env[USER_AGENT])
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_mobile=(val)
|
def is_mobile=(val)
|
||||||
@ -39,12 +40,11 @@ module Middleware
|
|||||||
@is_mobile ||=
|
@is_mobile ||=
|
||||||
begin
|
begin
|
||||||
session = @env[RACK_SESSION]
|
session = @env[RACK_SESSION]
|
||||||
# don't initialize params until later otherwise
|
# don't initialize params until later
|
||||||
# you get a broken params on the request
|
# otherwise you get a broken params on the request
|
||||||
params = {}
|
params = {}
|
||||||
user_agent = @env[USER_AGENT]
|
|
||||||
|
|
||||||
MobileDetection.resolve_mobile_view!(user_agent, params, session) ? :true : :false
|
MobileDetection.resolve_mobile_view!(@env[USER_AGENT], params, session) ? :true : :false
|
||||||
end
|
end
|
||||||
|
|
||||||
@is_mobile == :true
|
@is_mobile == :true
|
||||||
@ -62,7 +62,8 @@ module Middleware
|
|||||||
@is_crawler ||=
|
@is_crawler ||=
|
||||||
begin
|
begin
|
||||||
user_agent = @env[USER_AGENT]
|
user_agent = @env[USER_AGENT]
|
||||||
if CrawlerDetection.crawler?(user_agent, @env["HTTP_VIA"])
|
|
||||||
|
if @env[DISCOURSE_RENDER] == "crawler" || CrawlerDetection.crawler?(user_agent, @env["HTTP_VIA"])
|
||||||
:true
|
:true
|
||||||
else
|
else
|
||||||
user_agent.downcase.include?("discourse") ? :true : :false
|
user_agent.downcase.include?("discourse") ? :true : :false
|
||||||
@ -122,7 +123,7 @@ module Middleware
|
|||||||
def logged_in_anon_limiter
|
def logged_in_anon_limiter
|
||||||
@logged_in_anon_limiter ||= RateLimiter.new(
|
@logged_in_anon_limiter ||= RateLimiter.new(
|
||||||
nil,
|
nil,
|
||||||
"logged_in_anon_cache_#{@env["HOST"]}/#{@env["REQUEST_URI"]}",
|
"logged_in_anon_cache_#{@env["HTTP_HOST"]}/#{@env["REQUEST_URI"]}",
|
||||||
GlobalSetting.force_anonymous_min_per_10_seconds,
|
GlobalSetting.force_anonymous_min_per_10_seconds,
|
||||||
10
|
10
|
||||||
)
|
)
|
||||||
@ -225,7 +226,6 @@ module Middleware
|
|||||||
end
|
end
|
||||||
|
|
||||||
result
|
result
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user