diff options
| author | syeopite <70992037+syeopite@users.noreply.github.com> | 2021-08-24 19:59:27 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-24 19:59:27 +0000 |
| commit | fceb8093f17f3fce8462e619d3fddc7399672771 (patch) | |
| tree | 4de4b81c30d0e848dc01710fe760e1be4432594b /src/invidious.cr | |
| parent | 0db23f925225f50ed574c69abbb0bd5de58bf709 (diff) | |
| download | invidious-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.cr | 17 |
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 |
