diff --git a/src/cookie_fix.cr b/src/cookie_fix.cr new file mode 100644 index 00000000..536d5887 --- /dev/null +++ b/src/cookie_fix.cr @@ -0,0 +1,28 @@ +module HTTP + class Cookie + module Parser + SetCookieStringFix = /^#{Regex::CookiePair}(?:;\s*#{Regex::CookieAV})*$/ + + def parse_set_cookie(header) + match = header.match(SetCookieStringFix) + return unless match + + expires = if max_age = match["max_age"]? + Time.now + max_age.to_i.seconds + else + parse_time(match["expires"]?) + end + + Cookie.new( + match["name"], match["value"], + path: match["path"]? || "/", + expires: expires, + domain: match["domain"]?, + secure: match["secure"]? != nil, + http_only: match["http_only"]? != nil, + extension: match["extension"]? + ) + end + end + end +end diff --git a/src/invidious.cr b/src/invidious.cr index 62d73cef..6796008f 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -20,6 +20,7 @@ require "pg" require "xml" require "yaml" require "./helpers" +require "./cookie_fix" CONFIG = Config.from_yaml(File.read("config/config.yml"))