public function build_purge_request($url, $method)
{
if (!defined('PURGE_SERVER_TYPE') || 'varnish' == PURGE_SERVER_TYPE) {
global $varnish_servers;
} else {
$varnish_servers = array(constant('PURGE_SERVER_URL'));
}
$requests = array();
if (empty($varnish_servers)) {
return $requests;
}
$parsed = parse_url($url);
if (empty($parsed['host'])) {
return $requests;
}
foreach ($varnish_servers as $server) {
if ('BAN' == $method) {
$uri = $parsed['path'] . '?' . $parsed['query'];
} else {
$uri = '/';
if (isset($parsed['path'])) {
$uri = $parsed['path'];
}
if (isset($parsed['query'])) {
$uri .= $parsed['query'];
}
}
$request = array('host' => $parsed['host'], 'uri' => $uri, 'method' => $method);
if (!defined('PURGE_SERVER_TYPE') || 'varnish' == PURGE_SERVER_TYPE) {
$srv = explode(':', $server[0]);
$request['ip'] = $srv[0];
$request['port'] = $srv[1];
}
$requests[] = $request;
}
return $requests;
}