summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
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