ladybird/Userland/Libraries/LibCore/MimeData.cpp
Brian Gianforcaro 1682f0b760 Everything: Move to SPDX license identifiers in all files.
SPDX License Identifiers are a more compact / standardized
way of representing file license information.

See: https://spdx.dev/resources/use/#identifiers

This was done with the `ambr` search and replace tool.

 ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-22 11:22:27 +02:00

83 lines
2.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/StringBuilder.h>
#include <LibCore/MimeData.h>
namespace Core {
Vector<String> MimeData::formats() const
{
Vector<String> mime_types;
mime_types.ensure_capacity(m_data.size());
for (auto it : m_data)
mime_types.unchecked_append(it.key);
return mime_types;
}
Vector<URL> MimeData::urls() const
{
auto it = m_data.find("text/uri-list");
if (it == m_data.end())
return {};
Vector<URL> urls;
for (auto& line : StringView(it->value).split_view('\n')) {
urls.append(URL(line));
}
return urls;
}
void MimeData::set_urls(const Vector<URL>& urls)
{
StringBuilder builder;
for (auto& url : urls) {
builder.append(url.to_string());
builder.append('\n');
}
set_data("text/uri-list", builder.to_byte_buffer());
}
String MimeData::text() const
{
return String::copy(m_data.get("text/plain").value_or({}));
}
void MimeData::set_text(const String& text)
{
set_data("text/plain", text.to_byte_buffer());
}
String guess_mime_type_based_on_filename(const StringView& path)
{
if (path.ends_with(".pbm", CaseSensitivity::CaseInsensitive))
return "image/xportablebitmap";
if (path.ends_with(".pgm", CaseSensitivity::CaseInsensitive))
return "image/xportablegraymap";
if (path.ends_with(".png", CaseSensitivity::CaseInsensitive))
return "image/png";
if (path.ends_with(".ppm", CaseSensitivity::CaseInsensitive))
return "image/xportablepixmap";
if (path.ends_with(".gif", CaseSensitivity::CaseInsensitive))
return "image/gif";
if (path.ends_with(".bmp", CaseSensitivity::CaseInsensitive))
return "image/bmp";
if (path.ends_with(".jpg", CaseSensitivity::CaseInsensitive) || path.ends_with(".jpeg", CaseSensitivity::CaseInsensitive))
return "image/jpeg";
if (path.ends_with(".svg", CaseSensitivity::CaseInsensitive))
return "image/svg+xml";
if (path.ends_with(".md", CaseSensitivity::CaseInsensitive))
return "text/markdown";
if (path.ends_with(".html", CaseSensitivity::CaseInsensitive) || path.ends_with(".htm", CaseSensitivity::CaseInsensitive))
return "text/html";
if (path.ends_with("/", CaseSensitivity::CaseInsensitive))
return "text/html";
if (path.ends_with(".csv", CaseSensitivity::CaseInsensitive))
return "text/csv";
return "text/plain";
}
}