def post(self): thing_id = self.request.get('thing_id') url = 'https://api.flattr.com/rest/v2/things/' + thing_id + '/flattr' user = get_current_youtify_user() headers = { 'Authorization': 'Bearer %s' % user.flattr_access_token } response = urlfetch.fetch(url=url, method=urlfetch.POST, headers=headers, validate_certificate=VALIDATE_CERTIFICATE) json = simplejson.loads(response.content) if json.get('message') == 'ok' and 'thing' in json: click = FlattrClick( youtify_user=user, flattr_user_name=user.flattr_user_name, thing_id=str(json['thing'].get('id')), thing_title=json['thing'].get('title') ) click.put() else: logging.error('Error logging flattr click. Response: %s' % response.content) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(response.content)
def get(self): redirect_uri = self.request.get('redirect_uri', '/') user = get_current_youtify_user() user.flattr_access_token = None user.flattr_user_name = None user.save() self.redirect(redirect_uri)
def get(self): current_user = users.get_current_user() user = get_current_youtify_user() if (current_user is not None) and (user is None): user = create_youtify_user() logout_url = '' login_url = '' my_user_email = '' my_flattr_username = '' my_youtube_username = '' if (user is not None): my_user_email = user.google_user.email() logout_url = users.create_logout_url('/flattr_submit') if user.flattr_user_name: my_flattr_username = user.flattr_user_name if user.youtube_username: my_youtube_username = user.youtube_username else: login_url = users.create_login_url('/flattr_submit') path = os.path.join(os.path.dirname(__file__), 'html', 'flattr_submit.html') self.response.headers['Content-Type'] = 'text/html; charset=utf-8' self.response.out.write(template.render(path, { 'my_user_email': my_user_email, 'my_flattr_username': my_flattr_username, 'my_youtube_username': my_youtube_username, 'logout_url': logout_url, 'nr_of_submitted_vides': SubmittedVideo.all().count(), 'flattr_connect_url': '/flattrconnect?redirect_uri=%s' % urllib.quote(self.request.url), 'flattr_disconnect_url': '/flattrdisconnect?redirect_uri=' + urllib.quote(self.request.url), 'login_url': login_url, }))
def post(self): """Update playlist""" youtify_user = get_current_youtify_user() if youtify_user == None: self.error(403) return playlist_id = self.request.path.split('/')[-1] playlist_model = Playlist.get_by_id(int(playlist_id)) json = self.request.get('json', None) device = self.request.get('device') if json is None: self.error(400) return if playlist_model.owner.key() == youtify_user.key(): if youtify_user.device != device: self.error(409) self.response.out.write('wrong_device') return else: playlist_model.json = json playlist_model.save() self.response.out.write(str(playlist_model.key().id())) else: self.error(403)
def get(self): current_user = users.get_current_user() youtify_user = get_current_youtify_user() if youtify_user is not None: youtify_user.device = str(random.random()) youtify_user.save() if (current_user is not None) and (youtify_user is None): youtify_user = create_youtify_user() ON_PRODUCTION = os.environ['SERVER_SOFTWARE'].startswith('Google App Engine') # http://stackoverflow.com/questions/1916579/in-python-how-can-i-test-if-im-in-google-app-engine-sdk path = os.path.join(os.path.dirname(__file__), 'html', 'index.html') self.response.headers['Content-Type'] = 'text/html; charset=utf-8'; self.response.out.write(template.render(path, { 'user': current_user, 'youtify_user': youtify_user, 'accept_language_header': self.request.headers.get('Accept-Language', ''), 'logged_in': int(current_user is not None), 'login_url': users.create_login_url('/'), 'logout_url': users.create_logout_url('/'), 'toplist': toplist.get_or_create_toplist_json(), 'ON_PRODUCTION': ON_PRODUCTION, 'ON_DEV': ON_PRODUCTION is False, 'url': self.request.url, }))
def post(self): username = self.request.get('username') user = get_current_youtify_user() user.youtube_username = username user.save() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('ok')
def delete(self): """Delete playlist""" youtify_user = get_current_youtify_user() if youtify_user == None: self.error(403) return playlist_id = self.request.path.split('/')[-1] playlist_model = Playlist.get_by_id(int(playlist_id)) if playlist_model.owner.key() == youtify_user.key(): playlist_model.delete() else: self.error(403)
def get(self): current_user = users.get_current_user() user = get_current_youtify_user() if (current_user is not None) and (user is None): user = create_youtify_user() path = os.path.join(os.path.dirname(__file__), 'html', 'admin.html') self.response.headers['Content-Type'] = 'text/html; charset=utf-8' self.response.out.write(template.render(path, { 'my_user_name': user.google_user.nickname().split('@')[0], 'my_user_email': user.google_user.email(), 'my_user_id': user.key().id(), 'logout_url': users.create_logout_url('/'), 'languages': [lang for lang in get_languages() if lang['enabled_in_tool']], }))
def get(self): current_user = users.get_current_user() youtify_user = get_current_youtify_user() playlists = '[]'; if youtify_user is not None: playlists = get_playlists_json_for_user(youtify_user) youtify_user.device = str(random.random()) youtify_user.save() if (current_user is not None) and (youtify_user is None): youtify_user = create_youtify_user() ON_PRODUCTION = os.environ['SERVER_SOFTWARE'].startswith('Google App Engine') # http://stackoverflow.com/questions/1916579/in-python-how-can-i-test-if-im-in-google-app-engine-sdk # Find videotag and generate open graph meta tags match = re.compile(r'videos/(.*)').search(self.request.url) if match: og_tag = '<meta property="og:video" content="http://www.youtube.com/v/' + match.groups()[0] + '?version=3&autohide=1"/><meta property="og:video:type" content="application/x-shockwave-flash"/><meta property="og:video:width" content="396"/><meta property="og:video:height" content="297"/>' else: og_tag = '' lang = auto_detect_language(self.request) path = os.path.join(os.path.dirname(__file__), 'html', 'index.html') self.response.headers['Content-Type'] = 'text/html; charset=utf-8'; self.response.out.write(template.render(path, { 'user': current_user, 'is_admin': int(users.is_current_user_admin()), 'youtify_user': youtify_user, 'playlistsFromServer': playlists, 'autoDetectedLanguageByServer': lang, 'autoDetectedTranslations': get_deployed_translations_json(lang), 'accept_language_header': self.request.headers.get('Accept-Language', ''), # todo remove 'logged_in': int(current_user is not None), 'has_flattr_access_token': int(youtify_user is not None and youtify_user.flattr_access_token is not None), 'flattr_user_name': youtify_user is not None and youtify_user.flattr_user_name, 'login_url': users.create_login_url('/'), 'logout_url': users.create_logout_url('/'), 'toplist': get_or_create_toplist_json(), 'flattr_toplist': flattr_toplist.get_or_create_toplist_json(), 'ON_PRODUCTION': ON_PRODUCTION, 'ON_DEV': ON_PRODUCTION is False, 'USE_PRODUCTION_JAVASCRIPT': ON_PRODUCTION, 'languages': [lang for lang in get_languages() if lang['enabled_on_site']], #'USE_PRODUCTION_JAVASCRIPT': True, # Uncomment to try out production settings. Remember to build production.js with localhost:8080/minimizer 'url': self.request.url, 'og_tag': og_tag, }))
def get(self): """Get playlists for logged in user""" youtify_user = get_current_youtify_user() playlists = [] for playlist in Playlist.all().filter('owner =', youtify_user): if playlist.json is None: logging.error("Playlist " + str(playlist.key().id()) + " has invalid JSON, skipping...") else: playlists.append(playlist.json) output = '[' + ','.join(playlists) + ']' self.response.headers['Content-Type'] = 'application/json' self.response.out.write(output)
def post(self): code = self.request.path.split('/')[-2] original = self.request.get('original') suggestion = self.request.get('suggestion') if not code in translations: raise Exception('Unknown language code') current_user = get_current_youtify_user() translation = Translation(text=suggestion, user=current_user) phrase = Phrase.all().filter(original=original) if phrase is None and users.is_current_user_admin(): phrase = Phrase(original=original) suggestions = getattr(phrase, code) suggestions.append(suggestion) phrase.save()
def get(self): current_user = users.get_current_user() user = get_current_youtify_user() if (current_user is not None) and (user is None): user = create_youtify_user() logout_url = '' login_url = '' my_user_email = '' my_flattr_username = '' my_youtube_username = '' if (user is not None): my_user_email = user.google_user2.email() logout_url = users.create_logout_url('/flattr_submit') if user.flattr_user_name: my_flattr_username = user.flattr_user_name if user.youtube_username: my_youtube_username = user.youtube_username else: login_url = users.create_login_url('/flattr_submit') path = os.path.join(os.path.dirname(__file__), 'html', 'flattr_submit.html') self.response.headers['Content-Type'] = 'text/html; charset=utf-8' self.response.out.write( template.render( path, { 'my_user_email': my_user_email, 'my_flattr_username': my_flattr_username, 'my_youtube_username': my_youtube_username, 'logout_url': logout_url, 'nr_of_submitted_vides': SubmittedVideo.all().count(), 'flattr_connect_url': '/flattrconnect?redirect_uri=%s' % urllib.quote(self.request.url), 'flattr_disconnect_url': '/flattrdisconnect?redirect_uri=' + urllib.quote(self.request.url), 'login_url': login_url, }))
def delete(self): """Delete playlist""" youtify_user = get_current_youtify_user() if youtify_user == None: self.error(403) return playlist_id = self.request.path.split('/')[-1] playlist_model = Playlist.get_by_id(int(playlist_id)) device = self.request.get('device') if playlist_model.owner.key() == youtify_user.key(): if youtify_user.device != device: self.error(409) self.response.out.write('wrong_device') return else: playlist_model.delete() else: self.error(403)
def post(self): """Create new playlist""" youtify_user = get_current_youtify_user() json = simplejson.loads(self.request.get('json')) if json is None: self.error(500) playlist_model = Playlist(owner=youtify_user, json=None) playlist_model.put() json['remoteId'] = playlist_model.key().id() json['owner'] = { 'id': youtify_user.key().id(), 'name': youtify_user.google_user.nickname().split('@')[0], # don't leak users email } playlist_model.json = simplejson.dumps(json) playlist_model.save() self.response.headers['Content-Type'] = 'application/json' self.response.out.write(playlist_model.json)
def post(self): url_to_submit = self.request.get('url') url = 'https://api.flattr.com/rest/v2/flattr' user = get_current_youtify_user() headers = { 'Authorization': 'Bearer %s' % user.flattr_access_token, 'Content-Type': 'application/json', } data = { #'url': 'http://flattr.com/submit/auto?' + urllib.urlencode({'url': url_to_submit}), #'url': urllib.quote(url_to_submit), 'url': url_to_submit, } logging.info(url_to_submit) logging.info(data['url']) #data = urllib.urlencode(data) data = simplejson.dumps(data) response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=headers, validate_certificate=VALIDATE_CERTIFICATE) json = simplejson.loads(response.content) if json.get('message') == 'ok' and 'thing' in json: click = FlattrClick( youtify_user=user, flattr_user_name=user.flattr_user_name, thing_id=str(json['thing'].get('id')), thing_title=json['thing'].get('title') ) click.put() else: logging.error('Error logging flattr click. Response: %s' % response.content) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(response.content)
def post(self): video_id = self.request.get('video_id') title = self.request.get('title') description = self.request.get('description') url = 'https://api.flattr.com/rest/v2/things/' user = get_current_youtify_user() headers = { 'Authorization': 'Bearer %s' % user.flattr_access_token, 'Content-Type': 'application/json', } data = simplejson.dumps({ 'url': 'http://www.youtube.com/watch?v=' + video_id, 'title': title, 'description': description, 'tags': 'music', 'category': 'audio', }) response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=headers) if response.status_code == 201: json = simplejson.loads(response.content) log_entry = SubmittedVideo(youtify_user=user, flattr_user_name=user.flattr_user_name, title=title, thing_id=str(json['id']), video_id=video_id) log_entry.put() self.response.headers['Content-Type'] = 'application/json' self.response.out.write(response.content)
def post(self): """Post new suggestion""" lang_code = self.request.path.split("/")[-3] language = Language.all().filter("code =", lang_code).get() if language is None: self.error(404) user = get_current_youtify_user() if not (users.is_current_user_admin() or user.key() in language.leaders): self.error(403) translation_id = self.request.path.split("/")[-1] translation = Translation.get_by_id(int(translation_id)) if translation is None: self.error(404) translation.text = self.request.get("text") translation.save() self.response.headers["Content-Type"] = "text/plain" self.response.out.write("success")
def post(self): video_id = self.request.get('video_id') title = self.request.get('title') description = self.request.get('description') url = 'https://api.flattr.com/rest/v2/things/' user = get_current_youtify_user() headers = { 'Authorization': 'Bearer %s' % user.flattr_access_token, 'Content-Type': 'application/json', } data = simplejson.dumps({ 'url': 'http://www.youtube.com/watch?v=' + video_id, 'title': title, 'description': description, 'tags': 'music', 'category': 'audio', }) response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=headers) if response.status_code == 201: json = simplejson.loads(response.content) log_entry = SubmittedVideo( youtify_user=user, flattr_user_name=user.flattr_user_name, title=title, thing_id=str(json['id']), video_id=video_id ) log_entry.put() self.response.headers['Content-Type'] = 'application/json' self.response.out.write(response.content)
def get(self): code = self.request.get('code') url = 'https://flattr.com/oauth/token' headers = { 'Authorization': 'Basic %s' % base64.b64encode(config.CLIENT_ID + ":" + config.CLIENT_SECRET), 'Content-Type': 'application/json', } data = simplejson.dumps({ 'code': code, 'grant_type': 'authorization_code', }) response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=headers, validate_certificate=VALIDATE_CERTIFICATE) response = simplejson.loads(response.content) if 'access_token' in response: user = get_current_youtify_user() user.flattr_access_token = response['access_token'] user.flattr_scope = FLATTR_SCOPE update_fattr_user_info(user) user.save() redirect_uri = self.request.cookies.get('redirect_uri') if redirect_uri: self.response.headers['Set-Cookie'] = 'redirect_uri=deleted; expires=Thu, 01 Jan 1970 00:00:00 GMT' self.redirect(redirect_uri) else: self.redirect('/') else: self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Flattr connection failed')
def get(self): """Get playlists for logged in user""" youtify_user = get_current_youtify_user() self.response.headers['Content-Type'] = 'application/json' self.response.out.write(get_playlists_json_for_user(youtify_user))
def get(self): user = get_current_youtify_user() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write(user.youtube_username)