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