2026-06-11 06:15:14 -03:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2026, Ladybird contributors
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <AK/StringBuilder.h>
|
|
|
|
|
#include <LibDevTools/StorageHelpers.h>
|
|
|
|
|
#include <LibURL/Parser.h>
|
|
|
|
|
#include <LibURL/URL.h>
|
|
|
|
|
|
|
|
|
|
namespace DevTools {
|
|
|
|
|
|
2026-06-12 07:27:57 -03:00
|
|
|
JsonObject define_storage_field(StringView name, StorageFieldType state)
|
|
|
|
|
{
|
|
|
|
|
JsonObject field;
|
|
|
|
|
field.set("name"sv, name);
|
|
|
|
|
field.set("editable"sv, state == StorageFieldType::Mutable);
|
|
|
|
|
|
|
|
|
|
if (state == StorageFieldType::Hidden)
|
|
|
|
|
field.set("hidden"sv, true);
|
|
|
|
|
else if (state == StorageFieldType::Private)
|
|
|
|
|
field.set("private"sv, true);
|
|
|
|
|
|
|
|
|
|
return field;
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-11 06:15:14 -03:00
|
|
|
Optional<String> storage_host_for_url(String const& url_string)
|
|
|
|
|
{
|
|
|
|
|
auto url = URL::Parser::basic_parse(url_string);
|
|
|
|
|
if (!url.has_value())
|
|
|
|
|
return {};
|
|
|
|
|
|
2026-06-17 08:39:37 -03:00
|
|
|
return storage_host_for_url(url.value());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Optional<String> storage_host_for_url(URL::URL const& url)
|
|
|
|
|
{
|
|
|
|
|
auto const& scheme = url.scheme();
|
2026-06-11 06:15:14 -03:00
|
|
|
if (scheme == "http"sv || scheme == "https"sv) {
|
|
|
|
|
StringBuilder builder;
|
|
|
|
|
builder.append(scheme);
|
|
|
|
|
builder.append("://"sv);
|
2026-06-17 08:39:37 -03:00
|
|
|
builder.append(url.serialized_host());
|
|
|
|
|
if (auto port = url.port(); port.has_value())
|
2026-06-11 06:15:14 -03:00
|
|
|
builder.appendff(":{}", *port);
|
|
|
|
|
return builder.to_string_without_validation();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (scheme == "about"sv || scheme == "file"sv || scheme == "javascript"sv || scheme == "resource"sv)
|
2026-06-17 08:39:37 -03:00
|
|
|
return url.serialize();
|
2026-06-11 06:15:14 -03:00
|
|
|
|
|
|
|
|
return {};
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-10 07:14:42 -03:00
|
|
|
Optional<String> storage_host_name(String const& storage_host)
|
|
|
|
|
{
|
|
|
|
|
auto url = URL::Parser::basic_parse(storage_host);
|
|
|
|
|
if (!url.has_value() || !url->host().has_value())
|
|
|
|
|
return {};
|
|
|
|
|
return url->serialized_host();
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-11 10:23:35 -03:00
|
|
|
JsonObject to_storage_operation_result(Optional<String> const& error_string)
|
|
|
|
|
{
|
|
|
|
|
JsonObject response;
|
|
|
|
|
if (error_string.has_value())
|
|
|
|
|
response.set("errorString"sv, *error_string);
|
|
|
|
|
else
|
|
|
|
|
response.set("errorString"sv, JsonValue {});
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
JsonObject to_storage_operation_result(ErrorOr<void> const& result)
|
|
|
|
|
{
|
|
|
|
|
JsonObject response;
|
|
|
|
|
if (result.is_error())
|
|
|
|
|
response.set("errorString"sv, result.error().string_literal());
|
|
|
|
|
else
|
|
|
|
|
response.set("errorString"sv, JsonValue {});
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-11 06:15:14 -03:00
|
|
|
}
|