Flattr integration: Show error messages to user
This commit is contained in:
parent
f069abcd7d
commit
c469f43bd7
4 changed files with 27 additions and 16 deletions
|
@ -24,6 +24,7 @@
|
|||
#
|
||||
|
||||
import urllib
|
||||
import urllib2
|
||||
import json
|
||||
|
||||
import logging
|
||||
|
@ -72,7 +73,11 @@ class Flattr(object):
|
|||
if data is not None:
|
||||
data = json.dumps(data)
|
||||
|
||||
response = util.urlopen(url, headers, data)
|
||||
try:
|
||||
response = util.urlopen(url, headers, data)
|
||||
except urllib2.HTTPError, error:
|
||||
return {'_gpodder_statuscode': error.getcode()}
|
||||
|
||||
if response.getcode() == 200:
|
||||
return json.loads(response.read())
|
||||
|
||||
|
@ -112,6 +117,13 @@ class Flattr(object):
|
|||
return data.get('username', '')
|
||||
|
||||
def flattr_url(self, url):
|
||||
"""Flattr an object given its Flattr URL
|
||||
|
||||
Returns a tuple (success, message):
|
||||
|
||||
success ... True if the item was Flattr'd
|
||||
message ... The success or error message
|
||||
"""
|
||||
params = {
|
||||
'url': url
|
||||
}
|
||||
|
@ -121,14 +133,13 @@ class Flattr(object):
|
|||
if '_gpodder_statuscode' in content:
|
||||
status_code = content['_gpodder_statuscode']
|
||||
if status_code == 401:
|
||||
return _('Not enough means to flattr')
|
||||
return (False, _('Not enough means to flattr'))
|
||||
elif status_code == 404:
|
||||
return _('Item does not exist on Flattr')
|
||||
return (False, _('Item does not exist on Flattr'))
|
||||
elif status_code == 403:
|
||||
# The current user have already flattred the thing or the user
|
||||
# is the owner of the thing we just silently ignore this case
|
||||
None
|
||||
return (True, _('Already flattred or own item'))
|
||||
else:
|
||||
return _('Invalid request')
|
||||
return (False, _('Invalid request'))
|
||||
|
||||
return (True, content.get('description', _('No description')))
|
||||
|
||||
return content.get('description', _('No description'))
|
||||
|
|
|
@ -192,6 +192,6 @@ class gPodderChannel(BuilderWidget):
|
|||
|
||||
def on_flattr_button_clicked(self, widget):
|
||||
if self.flattr_possible:
|
||||
status = self._flattr.flattr_url(self.channel.payment_url)
|
||||
self.show_message(status, title=_('Flattr status'))
|
||||
success, message = self._flattr.flattr_url(self.channel.payment_url)
|
||||
self.show_message(message, title=_('Flattr status'), important=not success)
|
||||
self.set_flattr_information()
|
||||
|
|
|
@ -99,8 +99,8 @@ class gPodderShownotesBase(BuilderWidget):
|
|||
|
||||
def on_flattr_button_clicked(self, widget):
|
||||
if self.flattr_possible:
|
||||
status = self._flattr.flattr_url(self.episode.payment_url)
|
||||
self.show_message(status, title=_('Flattr status'))
|
||||
success, message = self._flattr.flattr_url(self.episode.payment_url)
|
||||
self.show_message(message, title=_('Flattr status'), important=not success)
|
||||
self.set_flattr_information()
|
||||
|
||||
#############################################################
|
||||
|
|
|
@ -1909,8 +1909,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
|
||||
# flattr episode if auto-flattr is enabled
|
||||
if self.config.flattr.token and self.config.flattr.flattr_on_play:
|
||||
status = self.flattr.flattr_url(episode.payment_url)
|
||||
self.show_message(status, title=_('Flattr status'))
|
||||
success, message = self.flattr.flattr_url(episode.payment_url)
|
||||
self.show_message(message, title=_('Flattr status'), important=not success)
|
||||
|
||||
groups[player].append(filename)
|
||||
|
||||
|
@ -3182,8 +3182,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
|
||||
def on_flattr_button_clicked(self, widget, event):
|
||||
if self.flattr_possible:
|
||||
status = self.flattr.flattr_url(self.channel.payment_url)
|
||||
self.show_message(status, title=_('Flattr status'))
|
||||
success, message = self.flattr.flattr_url(self.channel.payment_url)
|
||||
self.show_message(message, title=_('Flattr status'), important=not success)
|
||||
self.set_flattr_information(widget.get_children()[0])
|
||||
|
||||
def on_itemAbout_activate(self, widget, *args):
|
||||
|
|
Loading…
Reference in a new issue