From 3ae298440463ae87dc822f3e29afb4b7e504feb0 Mon Sep 17 00:00:00 2001 From: afrmtbl Date: Mon, 2 Aug 2021 03:00:58 -0400 Subject: [PATCH] Determine default locale using "Accept-Language" header --- src/invidious.cr | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/invidious.cr b/src/invidious.cr index 89292f05..52bf5bb2 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -166,10 +166,17 @@ 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)) + elsif language_header = env.request.headers["Accept-Language"]? + preferred_langs = parse_accept_language_header(language_header) + if first_match = first_language_match(LOCALES.keys.to_set, preferred_langs) + preferences.locale = first_match + end + end rescue - Preferences.from_json("{}") end env.set "preferences", preferences