def post(self): method = self.request.get("_method") key = utils.url_to_entity_key(self.request.uri) if key: playlist = db.get(db.Key(key)) if playlist: current_user = utils.get_current_user() #Get corresponding link library_item = playlist.library_item_for_user(current_user) if method == "PUT": need_version_control = False playlist_changed = False if(self.request.get('position')): #Rights: Can always update this current_user.re_sort_playlists(library_item, int(self.request.get('position'))) if (playlist.collaborative or library_item.is_owner): #Rights: Owner or collaborators can update this if playlist.smart: utils.parse_smart_filters(playlist, self.request) playlist_changed = True if self.request.get('tracks'): playlist.tracks = self.request.get('tracks') playlist_changed = True need_version_control = playlist.collaborative if library_item.is_owner: #Rights: Only owner can update this if(self.request.get('name') and len(self.request.get('name')) > 0): playlist.name = utils.strip_html(self.request.get('name')) playlist_changed = True if(self.request.get('collaborative')): playlist.collaborative = utils.convert_javascript_bool_to_python(self.request.get('collaborative')) playlist_changed = True if playlist_changed: if need_version_control: if self.request.get('version') and not int(self.request.get('version')) < playlist.version: playlist.version += 1 playlist.put() self.response.out.write(utils.status_code_json(200)) else: self.response.out.write(library_item.serialize()) else: playlist.put() self.response.out.write(utils.status_code_json(200)) else: self.response.out.write(utils.status_code_json(200)) elif method == "DELETE": library_item.delete() current_user.re_index_playlists() if not playlist.has_user(): playlist.delete() self.response.out.write(utils.status_code_json(200))
def get(self): sc_api_url = "http://api.soundcloud.com" callback = self.request.get('callback') api_parameters = utils.extract_parameters(self.request.uri) if api_parameters: self.response.headers[ "Content-Type"] = "text/javascript; charset=utf-8" self.response.headers[ "Cache-Control"] = "max-age=10800, must-revalidate" # testing force client caching, works in ff3 at least parameters_hash = str(hash(api_parameters)) hit = memcache.get(parameters_hash) if hit is None: try: response = urlfetch.fetch( url=sc_api_url + urllib.quote_plus(api_parameters), method=urlfetch.GET, headers={ 'Content-Type': 'text/javascript; charset=utf-8' }) memcache.set(parameters_hash, response.content, 10800) utils.print_with_callback(callback, response.content, self.response) except: utils.print_with_callback(callback, utils.status_code_json(408), self.response) else: utils.print_with_callback(callback, hit, self.response)
def post(self): app_user = utils.get_current_user() if(self.request.get('nickname')): app_user.nickname = self.request.get('nickname') app_user.put() self.response.out.write(utils.status_code_json(200))
def post(self): app_user = utils.get_current_user() if (self.request.get('nickname')): app_user.nickname = self.request.get('nickname') app_user.put() self.response.out.write(utils.status_code_json(200))
def get(self): sc_api_url = "http://api.soundcloud.com/" callback = self.request.get('callback') api_parameters = utils.extract_parameters(self.request.uri) if api_parameters: self.response.headers["Content-Type"] = "text/javascript; charset=utf-8" self.response.headers["Cache-Control"] = "max-age=3600, must-revalidate" # testing force client caching, works in ff3 at least parameters_hash = str(hash(api_parameters)) hit = memcache.get(parameters_hash) if hit is None: try: response = urlfetch.fetch(url = sc_api_url + api_parameters,method=urlfetch.GET, headers={'Content-Type': 'text/javascript; charset=utf-8'}) memcache.set(parameters_hash, response.content, 3600) utils.print_with_callback(callback, response.content. self.response) except: utils.print_with_callback(callback, utils.status_code_json(408), self.response) else: utils.print_with_callback(callback, hit, self.response)
def post(self): method = self.request.get("_method") key = utils.url_to_entity_key(self.request.uri) if key: playlist = db.get(db.Key(key)) if playlist: current_user = utils.get_current_user() #Get corresponding link library_item = playlist.library_item_for_user(current_user) if method == "PUT": need_version_control = False playlist_changed = False if (self.request.get('position') ): #Rights: Can always update this current_user.re_sort_playlists( library_item, int(self.request.get('position'))) if (playlist.collaborative or library_item.is_owner ): #Rights: Owner or collaborators can update this if playlist.smart: utils.parse_smart_filters(playlist, self.request) playlist_changed = True if self.request.get('tracks'): playlist.tracks = self.request.get('tracks') playlist_changed = True need_version_control = playlist.collaborative if library_item.is_owner: #Rights: Only owner can update this if (self.request.get('name') and len(self.request.get('name')) > 0): playlist.name = utils.strip_html( self.request.get('name')) playlist_changed = True if (self.request.get('collaborative')): playlist.collaborative = utils.convert_javascript_bool_to_python( self.request.get('collaborative')) playlist_changed = True if playlist_changed: if need_version_control: if self.request.get('version') and not int( self.request.get( 'version')) < playlist.version: playlist.version += 1 playlist.put() self.response.out.write( utils.status_code_json(200)) else: self.response.out.write( library_item.serialize()) else: playlist.put() self.response.out.write( utils.status_code_json(200)) else: self.response.out.write(utils.status_code_json(200)) elif method == "DELETE": library_item.delete() current_user.re_index_playlists() if not playlist.has_user(): playlist.delete() self.response.out.write(utils.status_code_json(200))