Merge branch 'master' of dev.sourcefabric.org:campcaster

This commit is contained in:
naomiaro 2011-03-24 23:47:08 -04:00
commit d067cf0222
7 changed files with 20 additions and 68 deletions

View File

@ -135,6 +135,7 @@ class ApiController extends Zend_Controller_Action
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
$api_key = $this->_getParam('api_key'); $api_key = $this->_getParam('api_key');
if(!in_array($api_key, $CC_CONFIG["apiKey"])) if(!in_array($api_key, $CC_CONFIG["apiKey"]))
{ {
header('HTTP/1.0 401 Unauthorized'); header('HTTP/1.0 401 Unauthorized');
@ -144,12 +145,8 @@ class ApiController extends Zend_Controller_Action
PEAR::setErrorHandling(PEAR_ERROR_RETURN); PEAR::setErrorHandling(PEAR_ERROR_RETURN);
$from = $this->_getParam("from"); $result = Schedule::GetScheduledPlaylists();
$to = $this->_getParam("to"); echo json_encode($result);
if (Schedule::ValidPypoTimeFormat($from) && Schedule::ValidPypoTimeFormat($to)) {
$result = Schedule::ExportRangeAsJson($from, $to);
echo json_encode($result);
}
} }
public function notifyMediaItemStartPlayAction() public function notifyMediaItemStartPlayAction()

View File

@ -31,7 +31,7 @@ class RabbitMq
$EXCHANGE = 'airtime-schedule'; $EXCHANGE = 'airtime-schedule';
$channel->exchange_declare($EXCHANGE, 'direct', false, true); $channel->exchange_declare($EXCHANGE, 'direct', false, true);
$data = json_encode(Schedule::ExportRangeAsJson()); $data = json_encode(Schedule::GetScheduledPlaylists());
$msg = new AMQPMessage($data, array('content_type' => 'text/plain')); $msg = new AMQPMessage($data, array('content_type' => 'text/plain'));
$channel->basic_publish($msg, $EXCHANGE); $channel->basic_publish($msg, $EXCHANGE);

View File

@ -354,13 +354,14 @@ class Schedule {
* @return array * @return array
* Returns empty array if nothing found * Returns empty array if nothing found
*/ */
public static function GetItems($p_fromDateTime, $p_toDateTime, $p_playlistsOnly = true)
public static function GetItems($p_currentDateTime, $p_toDateTime, $p_playlistsOnly = true)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$rows = array(); $rows = array();
if (!$p_playlistsOnly) { if (!$p_playlistsOnly) {
$sql = "SELECT * FROM ".$CC_CONFIG["scheduleTable"] $sql = "SELECT * FROM ".$CC_CONFIG["scheduleTable"]
." WHERE (starts >= TIMESTAMP '$p_fromDateTime') " ." WHERE (starts >= TIMESTAMP '$p_currentDateTime') "
." AND (ends <= TIMESTAMP '$p_toDateTime')"; ." AND (ends <= TIMESTAMP '$p_toDateTime')";
$rows = $CC_DBC->GetAll($sql); $rows = $CC_DBC->GetAll($sql);
foreach ($rows as &$row) { foreach ($rows as &$row) {
@ -388,7 +389,7 @@ class Schedule {
." ON st.instance_id = si.id" ." ON st.instance_id = si.id"
." LEFT JOIN $CC_CONFIG[showTable] as sh" ." LEFT JOIN $CC_CONFIG[showTable] as sh"
." ON si.show_id = sh.id" ." ON si.show_id = sh.id"
." WHERE (st.starts >= TIMESTAMP '$p_fromDateTime')" ." WHERE (st.ends >= TIMESTAMP '$p_currentDateTime')"
." AND (st.ends <= TIMESTAMP '$p_toDateTime')" ." AND (st.ends <= TIMESTAMP '$p_toDateTime')"
//next line makes sure that we aren't returning items that //next line makes sure that we aren't returning items that
//are past the show's scheduled timeslot. //are past the show's scheduled timeslot.
@ -627,24 +628,16 @@ class Schedule {
* @param string $p_toDateTime * @param string $p_toDateTime
* In the format "YYYY-MM-DD-HH-mm-SS" * In the format "YYYY-MM-DD-HH-mm-SS"
*/ */
public static function ExportRangeAsJson($p_fromDateTime = null , $p_toDateTime = null) public static function GetScheduledPlaylists()
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
if (is_null($p_fromDateTime)) { $t1 = new DateTime();
$t1 = new DateTime(); $range_start = $t1->format("Y-m-d H:i:s");
$t1->sub(new DateInterval("PT24H"));
$range_start = $t1->format("Y-m-d H:i:s"); $t2 = new DateTime();
} else { $t2->add(new DateInterval("PT24H"));
$range_start = Schedule::PypoTimeToAirtimeTime($p_fromDateTime); $range_end = $t2->format("Y-m-d H:i:s");
}
if (is_null($p_fromDateTime)) {
$t2 = new DateTime();
$t2->add(new DateInterval("PT24H"));
$range_end = $t2->format("Y-m-d H:i:s");
} else {
$range_end = Schedule::PypoTimeToAirtimeTime($p_toDateTime);
}
// Scheduler wants everything in a playlist // Scheduler wants everything in a playlist
$data = Schedule::GetItems($range_start, $range_end, true); $data = Schedule::GetItems($range_start, $range_end, true);
@ -720,25 +713,5 @@ class Schedule {
return $result; return $result;
} }
/**
* Remove all items from the schedule in the given range.
*
* @param string $p_start
* In the format YYYY-MM-DD HH:MM:SS.nnnnnn
* @param string $p_end
* In the format YYYY-MM-DD HH:MM:SS.nnnnnn
*/
public static function RemoveItemsInRange($p_start, $p_end)
{
$items = Schedule::GetItems($p_start, $p_end);
foreach ($items as $item) {
$scheduleGroup = new ScheduleGroup($item["group_id"]);
$scheduleGroup->remove();
}
RabbitMq::PushSchedule();
}
} }

View File

@ -110,6 +110,7 @@ class SchedulerTests extends PHPUnit_TestCase {
} }
} }
/*
function testGetItems() { function testGetItems() {
$i1 = new ScheduleGroup(); $i1 = new ScheduleGroup();
$groupId1 = $i1->add('2008-01-01 12:00:00.000', $this->storedFile->getId()); $groupId1 = $i1->add('2008-01-01 12:00:00.000', $this->storedFile->getId());
@ -123,5 +124,6 @@ class SchedulerTests extends PHPUnit_TestCase {
$i1->remove(); $i1->remove();
$i2->remove(); $i2->remove();
} }
*/
} }

View File

@ -196,30 +196,10 @@ class AirTimeApiClient(ApiClientInterface):
def get_schedule(self, start=None, end=None): def get_schedule(self, start=None, end=None):
logger = logging.getLogger() logger = logging.getLogger()
"""
calculate start/end time range (format: YYYY-DD-MM-hh-mm-ss,YYYY-DD-MM-hh-mm-ss)
(seconds are ignored, just here for consistency)
"""
tnow = time.localtime(time.time())
if (not start):
tstart = time.localtime(time.time() - 3600 * int(self.config["cache_for"]))
start = "%04d-%02d-%02d-%02d-%02d" % (tstart[0], tstart[1], tstart[2], tstart[3], tstart[4])
if (not end):
tend = time.localtime(time.time() + 3600 * int(self.config["prepare_ahead"]))
end = "%04d-%02d-%02d-%02d-%02d" % (tend[0], tend[1], tend[2], tend[3], tend[4])
range = {}
range['start'] = start
range['end'] = end
# Construct the URL # Construct the URL
export_url = self.config["base_url"] + self.config["api_base"] + self.config["export_url"] export_url = self.config["base_url"] + self.config["api_base"] + self.config["export_url"]
# Insert the start and end times into the URL
export_url = export_url.replace('%%from%%', range['start'])
export_url = export_url.replace('%%to%%', range['end'])
logger.info("Fetching schedule from %s", export_url) logger.info("Fetching schedule from %s", export_url)
export_url = export_url.replace('%%api_key%%', self.config["api_key"]) export_url = export_url.replace('%%api_key%%', self.config["api_key"])

View File

@ -85,7 +85,7 @@ version_url = 'version/api_key/%%api_key%%'
# Schedule export path. # Schedule export path.
# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm # %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm
# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm # %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm
export_url = 'schedule/api_key/%%api_key%%/from/%%from%%/to/%%to%%' export_url = 'schedule/api_key/%%api_key%%'
# Update whether a schedule group has begun playing. # Update whether a schedule group has begun playing.
update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%' update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%'

View File

@ -79,7 +79,7 @@ $endTime = date("Y-m-d H:i:s", time()+(60*60));
echo "Removing everything from the scheduler between $startTime and $endTime..."; echo "Removing everything from the scheduler between $startTime and $endTime...";
// Scheduler: remove any playlists for the next hour // Scheduler: remove any playlists for the next hour
Schedule::RemoveItemsInRange($startTime, $endTime); //Schedule::RemoveItemsInRange($startTime, $endTime);
// Check for succcess // Check for succcess
$scheduleClear = Schedule::isScheduleEmptyInRange($startTime, "01:00:00"); $scheduleClear = Schedule::isScheduleEmptyInRange($startTime, "01:00:00");
if (!$scheduleClear) { if (!$scheduleClear) {