ProxyMappings.cpp 1018 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "ProxyMappings.h"
  7. Web::ProxyMappings& Web::ProxyMappings::the()
  8. {
  9. static ProxyMappings instance {};
  10. return instance;
  11. }
  12. Core::ProxyData Web::ProxyMappings::proxy_for_url(AK::URL const& url) const
  13. {
  14. auto url_string = url.to_deprecated_string();
  15. for (auto& it : m_mappings) {
  16. if (url_string.matches(it.key)) {
  17. auto result = Core::ProxyData::parse_url(m_proxies[it.value]);
  18. if (result.is_error()) {
  19. dbgln("Failed to parse proxy URL: {}", m_proxies[it.value]);
  20. continue;
  21. }
  22. return result.release_value();
  23. }
  24. }
  25. return {};
  26. }
  27. void Web::ProxyMappings::set_mappings(Vector<DeprecatedString> proxies, OrderedHashMap<DeprecatedString, size_t> mappings)
  28. {
  29. m_proxies = move(proxies);
  30. m_mappings = move(mappings);
  31. dbgln("Proxy mappings updated: proxies: {}", m_proxies);
  32. }