summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
authorsyeopite <70992037+syeopite@users.noreply.github.com>2021-08-24 19:59:27 +0000
committerGitHub <noreply@github.com>2021-08-24 19:59:27 +0000
commitfceb8093f17f3fce8462e619d3fddc7399672771 (patch)
tree4de4b81c30d0e848dc01710fe760e1be4432594b /src/invidious.cr
parent0db23f925225f50ed574c69abbb0bd5de58bf709 (diff)
downloadinvidious-fceb8093f17f3fce8462e619d3fddc7399672771.tar.gz
invidious-fceb8093f17f3fce8462e619d3fddc7399672771.tar.bz2
invidious-fceb8093f17f3fce8462e619d3fddc7399672771.zip
Use `athena-negotiation` to detect language through Accept-Language header (#2324)
Detect language through Accept-Language header
Diffstat (limited to 'src/invidious.cr')
-rw-r--r--src/invidious.cr17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index c940dadf..4d739340 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -17,6 +17,7 @@
require "digest/md5"
require "file_utils"
require "kemal"
+require "athena-negotiation"
require "openssl/hmac"
require "option_parser"
require "pg"
@@ -166,10 +167,20 @@ def popular_videos
end
before_all do |env|
- preferences = begin
- Preferences.from_json(URI.decode_www_form(env.request.cookies["PREFS"]?.try &.value || "{}"))
+ preferences = Preferences.from_json("{}")
+
+ begin
+ if prefs_cookie = env.request.cookies["PREFS"]?
+ preferences = Preferences.from_json(URI.decode_www_form(prefs_cookie.value))
+ else
+ if language_header = env.request.headers["Accept-Language"]?
+ if language = ANG.language_negotiator.best(language_header, LOCALES.keys)
+ preferences.locale = language.header
+ end
+ end
+ end
rescue
- Preferences.from_json("{}")
+ preferences = Preferences.from_json("{}")
end
env.set "preferences", preferences