CC-3336: Refactor schedule API used by pypo

-make sure that empty arrays are objects and not arrays
-clean up some comments
This commit is contained in:
Martin Konecny 2012-02-28 15:32:18 -05:00
parent 1d02c56874
commit b572b26b68
2 changed files with 23 additions and 25 deletions

View File

@ -287,8 +287,8 @@ class ApiController extends Zend_Controller_Action
PEAR::setErrorHandling(PEAR_ERROR_RETURN);
$result = Application_Model_Schedule::GetScheduledPlaylists();
echo json_encode($result);
$data = Application_Model_Schedule::GetScheduledPlaylists();
echo json_encode($data, JSON_FORCE_OBJECT);
}
public function notifyMediaItemStartPlayAction()

View File

@ -48,11 +48,16 @@ class PypoFetch(Thread):
self.cache_dir = os.path.join(config["cache_dir"], "scheduler")
logger.debug("Cache dir %s", self.cache_dir)
try:
if not os.path.exists(dir):
if not os.path.isdir(dir):
"""
We get here if path does not exist, or path does exist but
is a file. We are not handling the second case, but don't
think we actually care about handling it.
"""
logger.debug("Cache dir does not exist. Creating...")
os.makedirs(dir)
except Exception, e:
logger.error(e)
pass
self.schedule_data = []
self.logger.info("PypoFetch: init complete")
@ -276,6 +281,9 @@ class PypoFetch(Thread):
- runs the cleanup routine, to get rid of unused cached files
"""
def process_schedule(self, schedule_data, bootstrapping):
self.logger.debug(schedule_data)
media = schedule_data["media"]
# Download all the media and put playlists in liquidsoap "annotate" format
@ -284,12 +292,12 @@ class PypoFetch(Thread):
except Exception, e: self.logger.error("%s", e)
# Send the data to pypo-push
scheduled_data = dict()
scheduled_data['liquidsoap_annotation_queue'] = liquidsoap_annotation_queue
self.logger.debug("Pushing to pypo-push: "+ str(media))
self.push_queue.put(media)
"""
TODO
# cleanup
try: self.cleanup()
except Exception, e: self.logger.error("%s", e)
@ -309,7 +317,7 @@ class PypoFetch(Thread):
media_item = media[mkey]
if bootstrapping:
check_for_crash(media_item)
check_for_previous_crash(media_item)
# create playlist directory
try:
@ -356,7 +364,7 @@ class PypoFetch(Thread):
entry['annotate'] = pl_entry
return entry
def check_for_crash(media_item):
def check_for_previous_crash(media_item):
start = media_item['start']
end = media_item['end']
@ -453,9 +461,6 @@ class PypoFetch(Thread):
def main(self):
try: os.mkdir(self.cache_dir)
except Exception, e: pass
# Bootstrap: since we are just starting up, we need to grab the
# most recent schedule. After that we can just wait for updates.
success, self.schedule_data = self.api_client.get_schedule()
@ -470,23 +475,16 @@ class PypoFetch(Thread):
message = self.fetch_queue.get(block=True, timeout=3600)
self.handle_message(message)
except Exception, e:
"""
There is a problem with the RabbitMq messenger service. Let's
log the error and get the schedule via HTTP polling
"""
self.logger.error("Exception, %s", e)
status, self.schedule_data = self.api_client.get_schedule()
if status == 1:
success, self.schedule_data = self.api_client.get_schedule()
if success:
self.process_schedule(self.schedule_data, False)
loops += 1
"""
Main loop of the thread:
Wait for schedule updates from RabbitMQ, but in case there arent any,
poll the server to get the upcoming schedule.
"""
def run(self):
while True:
self.main()
"""
Entry point of the thread
"""
self.main()