Added HTTP Range Request support to feeds/station-rss controller to make it work in iTunes
This commit is contained in:
parent
4fd61cb088
commit
51d2f1dd0b
|
@ -15,8 +15,45 @@ class FeedsController extends Zend_Controller_Action
|
|||
return;
|
||||
}
|
||||
|
||||
header('Content-Type: text/xml; charset=UTF-8');
|
||||
|
||||
echo Application_Service_PodcastService::createStationRssFeed();
|
||||
$rssData = Application_Service_PodcastService::createStationRssFeed();
|
||||
|
||||
$mimeType = "text/xml";
|
||||
header("Content-Type: $mimeType; charset=UTF-8");
|
||||
|
||||
if (isset($_SERVER['HTTP_RANGE'])) {
|
||||
header('HTTP/1.1 206 Partial Content');
|
||||
} else {
|
||||
header('HTTP/1.1 200 OK');
|
||||
}
|
||||
header("Content-Type: $mimeType");
|
||||
header("Content-Transfer-Encoding: binary");
|
||||
header('Cache-Control: public, must-revalidate, max-age=0');
|
||||
header('Pragma: no-cache');
|
||||
header('Accept-Ranges: bytes');
|
||||
$size = strlen($rssData);
|
||||
|
||||
$begin = 0;
|
||||
$end = $size - 1;
|
||||
|
||||
//ob_start(); //Must start a buffer here for these header() functions
|
||||
|
||||
if (isset($_SERVER['HTTP_RANGE'])) {
|
||||
if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches)) {
|
||||
$begin = intval($matches[1]);
|
||||
if (!empty($matches[2])) {
|
||||
$end = intval($matches[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($size > 0) {
|
||||
header('Content-Length:' . (($end - $begin) + 1));
|
||||
if (isset($_SERVER['HTTP_RANGE'])) {
|
||||
header("Content-Range: bytes $begin-$end/$size");
|
||||
}
|
||||
}
|
||||
|
||||
echo $rssData;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue