LibHTTP+LibWebView: Share Cookie conversion
Nothing about `parsed_cookie_from_devtools_cookie()` is specific to DevTools, so move it to ParsedCookie.h as `parse_cookie()` instead.
This commit is contained in:
parent
9f7a328d9b
commit
b1547d467e
3 changed files with 26 additions and 24 deletions
|
|
@ -101,6 +101,29 @@ Optional<ParsedCookie> parse_cookie(URL::URL const& url, StringView cookie_strin
|
|||
return parsed_cookie;
|
||||
}
|
||||
|
||||
ErrorOr<ParsedCookie> parse_cookie(Cookie const& cookie)
|
||||
{
|
||||
ParsedCookie parsed_cookie;
|
||||
parsed_cookie.name = cookie.name;
|
||||
parsed_cookie.value = cookie.value;
|
||||
parsed_cookie.same_site_attribute = cookie.same_site;
|
||||
parsed_cookie.path = cookie.path;
|
||||
parsed_cookie.secure_attribute_present = cookie.secure;
|
||||
parsed_cookie.http_only_attribute_present = cookie.http_only;
|
||||
|
||||
if (!cookie.host_only) {
|
||||
auto domain = cookie.domain.bytes_as_string_view();
|
||||
if (domain.starts_with('.'))
|
||||
domain = domain.substring_view(1);
|
||||
parsed_cookie.domain = domain.to_ascii_lowercase_string();
|
||||
}
|
||||
|
||||
if (cookie.persistent)
|
||||
parsed_cookie.expiry_time_from_expires_attribute = cookie.expiry_time;
|
||||
|
||||
return parsed_cookie;
|
||||
}
|
||||
|
||||
// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-22#section-5.6-8
|
||||
ErrorOr<void> parse_attributes(URL::URL const& url, ParsedCookie& parsed_cookie, StringView unparsed_attributes)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ struct ParsedCookie {
|
|||
};
|
||||
|
||||
Optional<ParsedCookie> parse_cookie(URL::URL const&, StringView cookie_string);
|
||||
ErrorOr<ParsedCookie> parse_cookie(Cookie const&);
|
||||
bool cookie_contains_invalid_control_character(StringView);
|
||||
Optional<UnixDateTime> parse_cookie_date(StringView);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,29 +30,6 @@ static CookieStorageKey storage_key_for_cookie(HTTP::Cookie::Cookie const& cooki
|
|||
return { cookie.name, cookie.domain, cookie.path };
|
||||
}
|
||||
|
||||
static HTTP::Cookie::ParsedCookie parsed_cookie_from_devtools_cookie(HTTP::Cookie::Cookie const& cookie)
|
||||
{
|
||||
HTTP::Cookie::ParsedCookie parsed_cookie;
|
||||
parsed_cookie.name = cookie.name;
|
||||
parsed_cookie.value = cookie.value;
|
||||
parsed_cookie.same_site_attribute = cookie.same_site;
|
||||
parsed_cookie.path = cookie.path;
|
||||
parsed_cookie.secure_attribute_present = cookie.secure;
|
||||
parsed_cookie.http_only_attribute_present = cookie.http_only;
|
||||
|
||||
if (!cookie.host_only) {
|
||||
auto domain = cookie.domain.bytes_as_string_view();
|
||||
if (domain.starts_with('.'))
|
||||
domain = domain.substring_view(1);
|
||||
parsed_cookie.domain = domain.to_ascii_lowercase_string();
|
||||
}
|
||||
|
||||
if (cookie.persistent)
|
||||
parsed_cookie.expiry_time_from_expires_attribute = cookie.expiry_time;
|
||||
|
||||
return parsed_cookie;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullOwnPtr<CookieJar>> CookieJar::create(Database::Database& database)
|
||||
{
|
||||
Statements statements {};
|
||||
|
|
@ -452,7 +429,8 @@ void CookieJar::update_cookie(HTTP::Cookie::Cookie cookie)
|
|||
ErrorOr<void> CookieJar::set_cookie_from_devtools(URL::URL const& url, Optional<CookieStorageKey> old_key, HTTP::Cookie::Cookie cookie)
|
||||
{
|
||||
auto new_key = storage_key_for_cookie(cookie);
|
||||
TRY(set_cookie(url, parsed_cookie_from_devtools_cookie(cookie), HTTP::Cookie::Source::Http));
|
||||
auto parsed_cookie = TRY(HTTP::Cookie::parse_cookie(cookie));
|
||||
TRY(set_cookie(url, parsed_cookie, HTTP::Cookie::Source::Http));
|
||||
|
||||
if (old_key.has_value() && *old_key != new_key)
|
||||
delete_cookie(*old_key);
|
||||
|
|
|
|||
Loading…
Reference in a new issue