Cookie.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * Copyright (c) 2022, Tobias Christiansen <tobyase@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "Cookie.h"
  7. #include <LibIPC/Decoder.h>
  8. #include <LibIPC/Encoder.h>
  9. namespace Web::Cookie {
  10. StringView same_site_to_string(SameSite same_site)
  11. {
  12. switch (same_site) {
  13. case SameSite::Default:
  14. return "Default"sv;
  15. case SameSite::None:
  16. return "None"sv;
  17. case SameSite::Lax:
  18. return "Lax"sv;
  19. case SameSite::Strict:
  20. return "Strict"sv;
  21. }
  22. VERIFY_NOT_REACHED();
  23. }
  24. SameSite same_site_from_string(StringView same_site_mode)
  25. {
  26. if (same_site_mode.equals_ignoring_case("None"sv))
  27. return SameSite::None;
  28. if (same_site_mode.equals_ignoring_case("Strict"sv))
  29. return SameSite::Strict;
  30. if (same_site_mode.equals_ignoring_case("Lax"sv))
  31. return SameSite::Lax;
  32. return SameSite::Default;
  33. }
  34. }
  35. template<>
  36. bool IPC::encode(Encoder& encoder, Web::Cookie::Cookie const& cookie)
  37. {
  38. encoder << cookie.name;
  39. encoder << cookie.value;
  40. encoder << cookie.domain;
  41. encoder << cookie.path;
  42. encoder << cookie.creation_time;
  43. encoder << cookie.expiry_time;
  44. encoder << cookie.host_only;
  45. encoder << cookie.http_only;
  46. encoder << cookie.last_access_time;
  47. encoder << cookie.persistent;
  48. encoder << cookie.secure;
  49. encoder << cookie.same_site;
  50. return true;
  51. }
  52. template<>
  53. ErrorOr<void> IPC::decode(Decoder& decoder, Web::Cookie::Cookie& cookie)
  54. {
  55. TRY(decoder.decode(cookie.name));
  56. TRY(decoder.decode(cookie.value));
  57. TRY(decoder.decode(cookie.domain));
  58. TRY(decoder.decode(cookie.path));
  59. TRY(decoder.decode(cookie.creation_time));
  60. TRY(decoder.decode(cookie.expiry_time));
  61. TRY(decoder.decode(cookie.host_only));
  62. TRY(decoder.decode(cookie.http_only));
  63. TRY(decoder.decode(cookie.last_access_time));
  64. TRY(decoder.decode(cookie.persistent));
  65. TRY(decoder.decode(cookie.secure));
  66. TRY(decoder.decode(cookie.same_site));
  67. return {};
  68. }