diff options
-rw-r--r-- | it_url.class | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/it_url.class b/it_url.class index da6f033..cf7f45a 100644 --- a/it_url.class +++ b/it_url.class @@ -459,6 +459,7 @@ function get_cache_filename($p) * @param $p['preprocess'] callback function (or array for methods) to change received file or array('function' => ..., 'in' => $src, 'out' => $dst, ...) with callback function plus args * @param $p['safety'] value 0 means dont generate alert, value 1 means generate alerts on timeouts and failures * @param $p['keepfailed'] keep old versions of files if download fails (sending alerts conservatively) + * @param $p['returnheaders'] Return array($path, $headers) instead of simply $path * @param $p['it_error'] parameters for it::error() */ function get_cache($p = array()) @@ -485,8 +486,13 @@ function get_cache($p = array()) touch($path); EDC('getcache', "new", $filemtime, $p['url'], $path); - if ($result = it_url::get($p + array('filemtime' => EDC('nocache') ? null : $filemtime))) # => true means not modified (no new data fetched) + $url = new it_url; + if ($result = $url->get($p + array('filemtime' => EDC('nocache') ? null : $filemtime))) # => true means not modified (no new data fetched) + { $newfile = it_url::_atomicwrite($path, $result); + if ($p['returnheaders']) + file_put_contents("$path.headers", '<?php return ' . var_export($url->headers, true) . ";\n"); + } else if ($p['keepfailed']) $result = $fileexists; else @@ -513,6 +519,10 @@ function get_cache($p = array()) $result = true; # Up to date } + # Read headers before $path is modified for preprocessing + if ($p['returnheaders']) + $headers = @include("$path.headers"); + if ($result && $p['preprocess']) { $srcpath = $path; @@ -565,7 +575,7 @@ function get_cache($p = array()) } EDC('getcache', $result, $path); - return $result ? $path : false; + return $result ? ($p['returnheaders'] ? array($path, $headers) : $path) : false; } /** |