IDNA.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (c) 2023, Simon Wanner <simon@skyrising.xyz>
  3. * Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <AK/Error.h>
  9. #include <AK/String.h>
  10. namespace Unicode::IDNA {
  11. enum class CheckHyphens {
  12. No,
  13. Yes,
  14. };
  15. enum class CheckBidi {
  16. No,
  17. Yes,
  18. };
  19. enum class CheckJoiners {
  20. No,
  21. Yes,
  22. };
  23. enum class UseStd3AsciiRules {
  24. No,
  25. Yes,
  26. };
  27. enum class TransitionalProcessing {
  28. No,
  29. Yes,
  30. };
  31. enum class VerifyDnsLength {
  32. No,
  33. Yes,
  34. };
  35. struct ToAsciiOptions {
  36. CheckHyphens check_hyphens { CheckHyphens::Yes };
  37. CheckBidi check_bidi { CheckBidi::Yes };
  38. CheckJoiners check_joiners { CheckJoiners::Yes };
  39. UseStd3AsciiRules use_std3_ascii_rules { UseStd3AsciiRules::No };
  40. TransitionalProcessing transitional_processing { TransitionalProcessing::No };
  41. VerifyDnsLength verify_dns_length { VerifyDnsLength::Yes };
  42. };
  43. ErrorOr<String> to_ascii(Utf8View domain_name, ToAsciiOptions const& = {});
  44. }