def get_page(self, page_path): if not self._menus: self.create_menus() if not self._menus.has_key(page_path): abort(404, "No such database.") return self._menus[page_path]
def play(sid): r=resolver.song(sid) if r: contentType,size,obj = r if isinstance(obj,basestring): log("ASK SID."+sid+"-> redirect to URL(%s)"%obj) web.redirect(obj) #headers are (perhaps) set by its own server else: log("ASK SID."+sid+"-> will return to a file-like (%s) of size (%s)"%(contentType,str(size))) if contentType: web.response.content_type = contentType if size: web.response.content_length = str(size) return obj else: log("ASK SID."+sid+"-> unknown sid ?!") web.abort(404)
def playdarApi(): mkjson=lambda cb,d: cb and "%s(%s)"%(cb,json.dumps(d)) or d auth = web.request.query.auth authenticated=isAuthentOk(auth) method = web.request.query.method.lower() callback = web.request.query.jsonp msg="ASK API.%s (auth=%s,cb=%s), auth is %s -> " % (method,auth,callback,authenticated and "OK" or "KO") if method=="stat": log(msg+"return stat") return mkjson(callback,{"name":"playdar","version":"0.1.1","authenticated":authenticated,"capabilities": []}) elif method=="resolve": if authenticated: artist=web.request.query.artist.strip() album=web.request.query.album.strip() track=web.request.query.track.strip() if artist and track: qid=web.request.query.qid or str(uuid.uuid5(uuid.NAMESPACE_DNS,(artist+album+track).encode("utf_8"))) # start the search in a thread Thread(target=resolver.initSearch, args=(qid,artist,album,track)).start() log(msg+"reply a qid(%s)"%qid) return mkjson(callback,{"qid":qid} ) else: logerr(msg+"can't reply coz it miss, at least, artist and track") web.abort(400) else: logerr(msg+"can't reply coz auth is KO") web.abort(400) elif method=="get_results": if authenticated: qid=web.request.query.qid if qid: result=resolver.fetchSearch(qid) if result: query,liste=result log(msg+"return %d result(s) for qid(%s)" % (len(liste),qid)) return mkjson(callback,{ "qid":qid, "refresh_interval":1000, "query": query, "results": liste, }) else: logerr(msg+"can't reply coz qid is unknown") web.abort(400) else: logerr(msg+"can't reply coz qid is missing") web.abort(400) else: logerr(msg+"can't reply coz auth is KO") web.abort(400) else: logerr(msg+"unknown method ?!?") web.abort(400)