** (Middleware) - Sets a proxy for HTTP sockets to connect via.**** Reuses the mechanism used by `web::WebClient`; ** that is, the proxy address should be configured in 'etc/web/config.props' with the key 'proxy'. ** Proxy exceptions are configured via the 'proxy.exceptions' key as a comma separated list of ** Regex globs.**** Sample 'config.props':** ** // Default proxy URL formatted as "http://{host}[:port]/"** proxy=http://foo:8080/** ** // Proxy exceptions as comma separated list of Regex globs** proxy.exceptions=192.168.*.*,*.google.com** ** For more automated and advanced proxy setting, including Proxy Auto-Config (PAC) files, see the ** article [Butter Proxies]`http://www.fantomfactory.org/articles/butter-proxies`.** class ProxyMiddleware : ButterMiddleware { @NoDocoverride ButterResponse sendRequest(Butter butter, ButterRequest req){ requiresProxy := proxyUrl != null && !proxyExceptions.any {it.matches(req.url.host.toStr)}if(requiresProxy) req.stash["afButter.proxy"] = proxyUrl.isAbs ? proxyUrl : `${req.url.scheme}://${proxyUrl}`return butter.sendRequest(req)}privateonce Uri? proxyUrl(){ webConfig("proxy")?.toUri}privateonce Regex[] proxyExceptions(){ webConfig("proxy.exceptions")?.split(',')?.map { Regex.glob(it)} ?: Regex#.emptyList}private Str? webConfig(Str key){ Pod.find("web", false)?.config(key)}}