-Remove useless api_client interface

This commit is contained in:
Martin Konecny 2012-07-12 16:51:11 -04:00
parent 7ce4934cdc
commit 62287a2313
9 changed files with 28 additions and 156 deletions

View file

@ -13,27 +13,14 @@ import urllib
import urllib2
import logging
import json
import os
from urlparse import urlparse
import base64
from configobj import ConfigObj
import string
import hashlib
import traceback
AIRTIME_VERSION = "2.1.3"
def api_client_factory(config, logger=None):
if logger != None:
temp_logger = logger
else:
temp_logger = logging.getLogger()
if config["api_client"] == "airtime":
return AirTimeApiClient(temp_logger)
else:
temp_logger.info('API Client "'+config["api_client"]+'" not supported. Please check your config file.\n')
sys.exit()
def to_unicode(obj, encoding='utf-8'):
if isinstance(obj, basestring):
if not isinstance(obj, unicode):
@ -44,120 +31,23 @@ def encode_to(obj, encoding='utf-8'):
if isinstance(obj, unicode):
obj = obj.encode(encoding)
return obj
def convert_dict_value_to_utf8(md):
#list comprehension to convert all values of md to utf-8
return dict([(item[0], encode_to(item[1], "utf-8")) for item in md.items()])
class ApiClientInterface:
# Implementation: optional
#
# Called from: beginning of all scripts
#
# Should exit the program if this version of pypo is not compatible with
# 3rd party software.
def is_server_compatible(self, verbose = True):
pass
# Implementation: Required
#
# Called from: fetch loop
#
# This is the main method you need to implement when creating a new API client.
# start and end are for testing purposes.
# start and end are strings in the format YYYY-DD-MM-hh-mm-ss
def get_schedule(self, start=None, end=None):
return 0, []
# Implementation: Required
#
# Called from: fetch loop
#
# This downloads the media from the server.
def get_media(self, src, dst):
pass
# Implementation: optional
# You dont actually have to implement this function for the liquidsoap playout to work.
#
# Called from: pypo_notify.py
#
# This is a callback from liquidsoap, we use this to notify about the
# currently playing *song*. We get passed a JSON string which we handed to
# liquidsoap in get_liquidsoap_data().
def notify_media_item_start_playing(self, data, media_id):
pass
# Implementation: optional
# You dont actually have to implement this function for the liquidsoap playout to work.
def generate_range_dp(self):
pass
# Implementation: optional
#
# Called from: push loop
#
# Return a dict of extra info you want to pass to liquidsoap
# You will be able to use this data in update_start_playing
def get_liquidsoap_data(self, pkey, schedule):
pass
def get_shows_to_record(self):
pass
def upload_recorded_show(self):
pass
def check_media_status(self, md5):
pass
def update_media_metadata(self, md):
pass
def list_all_db_files(self, dir_id):
pass
def list_all_watched_dirs(self):
pass
def add_watched_dir(self):
pass
def remove_watched_dir(self):
pass
def set_storage_dir(self):
pass
def register_component(self):
pass
def notify_liquidsoap_error(self, error_msg, stream_id):
pass
def notify_liquidsoap_connection(self, stream_id):
pass
# Put here whatever tests you want to run to make sure your API is working
def test(self):
pass
#def get_media_type(self, playlist):
# nil
################################################################################
# Airtime API Client
################################################################################
class AirTimeApiClient(ApiClientInterface):
class AirTimeApiClient():
def __init__(self, logger=None):
if logger != None:
self.logger = logger
if logger is None:
self.logger = logging
else:
self.logger = logging.getLogger()
self.logger = logger
# loading config file
try:
self.config = ConfigObj('/etc/airtime/api_client.cfg')

View file

@ -80,7 +80,7 @@ try:
configure_locale()
config = AirtimeMediaConfig(logger)
api_client = apc.api_client_factory(config.cfg)
api_client = apc.AirTimeApiClient()
api_client.register_component("media-monitor")
logger.info("Setting up monitor")

View file

@ -1,7 +1,6 @@
import logging
import sys
from api_clients import api_client
from configobj import ConfigObj
def generate_liquidsoap_config(ss):
data = ss['msg']
@ -10,30 +9,22 @@ def generate_liquidsoap_config(ss):
fh.write("# THIS FILE IS AUTO GENERATED. DO NOT CHANGE!! #\n")
fh.write("################################################\n")
for d in data:
buffer = d[u'keyname'] + " = "
str_buffer = d[u'keyname'] + " = "
if(d[u'type'] == 'string'):
temp = d[u'value']
buffer += '"%s"' % temp
str_buffer += '"%s"' % temp
else:
temp = d[u'value']
if(temp == ""):
temp = "0"
buffer += temp
buffer += "\n"
fh.write(api_client.encode_to(buffer))
str_buffer += temp
str_buffer += "\n"
fh.write(api_client.encode_to(str_buffer))
fh.write('log_file = "/var/log/airtime/pypo-liquidsoap/<script>.log"\n')
fh.close()
PATH_INI_FILE = '/etc/airtime/pypo.cfg'
try:
config = ConfigObj(PATH_INI_FILE)
except Exception, e:
print 'Error loading config file: ', e
sys.exit(1)
logging.basicConfig(format='%(message)s')
ac = api_client.api_client_factory(config, logging.getLogger())
ac = api_client(logging.getLogger())
ss = ac.get_stream_setting()
if ss is not None:

View file

@ -1,27 +1,18 @@
from api_clients import *
from configobj import ConfigObj
import sys
import json
try:
config = ConfigObj('/etc/airtime/pypo.cfg')
except Exception, e:
print 'error: ', e
sys.exit()
api_clients = api_client.api_client_factory(config)
api_clients = api_client.AirTimeApiClient()
dj_type = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
type = ''
source_type = ''
if dj_type == '--master':
type = 'master'
source_type = 'master'
elif dj_type == '--dj':
type = 'dj'
source_type = 'dj'
response = api_clients.check_live_stream_auth(username, password, type)
print response['msg']
print response['msg']

View file

@ -107,10 +107,10 @@ except Exception, e:
class Global:
def __init__(self):
self.api_client = api_client.api_client_factory(config)
self.api_client = api_client.AirTimeApiClient()
def selfcheck(self):
self.api_client = api_client.api_client_factory(config)
self.api_client = api_client.AirTimeApiClient()
return self.api_client.is_server_compatible()
def test_api(self):
@ -172,7 +172,7 @@ if __name__ == '__main__':
g.test_api()
sys.exit()
api_client = api_client.api_client_factory(config)
api_client = api_client.AirTimeApiClient()
api_client.register_component("pypo")
pypoFetch_q = Queue()

View file

@ -40,7 +40,7 @@ except Exception, e:
class PypoFetch(Thread):
def __init__(self, pypoFetch_q, pypoPush_q, media_q, telnet_lock):
Thread.__init__(self)
self.api_client = api_client.api_client_factory(config)
self.api_client = api_client.AirTimeApiClient()
self.fetch_queue = pypoFetch_q
self.push_queue = pypoPush_q
self.media_prepare_queue = media_q

View file

@ -64,7 +64,7 @@ except Exception, e:
class Notify:
def __init__(self):
self.api_client = api_client.api_client_factory(config)
self.api_client = api_client.AirTimeApiClient()
def notify_media_start_playing(self, data, media_id):
logger = logging.getLogger("notify")

View file

@ -42,7 +42,7 @@ except Exception, e:
class PypoPush(Thread):
def __init__(self, q, telnet_lock):
Thread.__init__(self)
self.api_client = api_client.api_client_factory(config)
self.api_client = api_client.AirTimeApiClient()
self.queue = q
self.telnet_lock = telnet_lock

View file

@ -46,7 +46,7 @@ class ShowRecorder(Thread):
def __init__ (self, show_instance, show_name, filelength, start_time):
Thread.__init__(self)
self.logger = logging.getLogger('recorder')
self.api_client = api_client.api_client_factory(config, self.logger)
self.api_client = api_client(self.logger)
self.filelength = filelength
self.start_time = start_time
self.show_instance = show_instance
@ -168,7 +168,7 @@ class Recorder(Thread):
def __init__(self, q):
Thread.__init__(self)
self.logger = logging.getLogger('recorder')
self.api_client = api_client.api_client_factory(config, self.logger)
self.api_client = api_client(self.logger)
self.api_client.register_component("show-recorder")
self.sr = None
self.shows_to_record = {}