MimeData.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/ByteBuffer.h>
  8. #include <AK/HashMap.h>
  9. #include <AK/URL.h>
  10. #include <LibCore/Object.h>
  11. namespace Core {
  12. class MimeData : public Object {
  13. C_OBJECT(MimeData);
  14. public:
  15. virtual ~MimeData() { }
  16. ByteBuffer data(const String& mime_type) const { return m_data.get(mime_type).value_or({}); }
  17. void set_data(const String& mime_type, const ByteBuffer& data) { m_data.set(mime_type, data); }
  18. bool has_format(const String& mime_type) const { return m_data.contains(mime_type); }
  19. Vector<String> formats() const;
  20. // Convenience helpers for "text/plain"
  21. bool has_text() const { return has_format("text/plain"); }
  22. String text() const;
  23. void set_text(const String&);
  24. // Convenience helpers for "text/uri-list"
  25. bool has_urls() const { return has_format("text/uri-list"); }
  26. Vector<URL> urls() const;
  27. void set_urls(const Vector<URL>&);
  28. const HashMap<String, ByteBuffer>& all_data() const { return m_data; }
  29. private:
  30. MimeData() { }
  31. explicit MimeData(const HashMap<String, ByteBuffer>& data)
  32. : m_data(data)
  33. {
  34. }
  35. HashMap<String, ByteBuffer> m_data;
  36. };
  37. String guess_mime_type_based_on_filename(const StringView&);
  38. Optional<String> guess_mime_type_based_on_sniffed_bytes(const ReadonlyBytes&);
  39. }