mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-16 21:18:02 +00:00
Hack for fixing issue #30
This commit is contained in:
@@ -213,9 +213,28 @@ class GravatarProxyView(View):
|
|||||||
'''
|
'''
|
||||||
Override get from parent class
|
Override get from parent class
|
||||||
'''
|
'''
|
||||||
|
def redir_default():
|
||||||
|
url = reverse_lazy(
|
||||||
|
'avatar_view',
|
||||||
|
args=[kwargs['digest']]) + '?s=%i' % size + '&forcedefault=y'
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
size = get_size(request)
|
size = get_size(request)
|
||||||
gravatarimagedata = None
|
gravatarimagedata = None
|
||||||
|
|
||||||
|
# This part is special/hackish
|
||||||
|
# Check if the image returned by Gravatar is their default image, if so,
|
||||||
|
# redirect to our default instead.
|
||||||
|
gravatar_test_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \
|
||||||
|
+ '?s=%i' % 50
|
||||||
|
try:
|
||||||
|
testdata = urlopen(gravatar_test_url, timeout=URL_TIMEOUT)
|
||||||
|
data = BytesIO(testdata.read())
|
||||||
|
if hashlib.md5(data.read()).hexdigest() == '71bc262d627971d13fe6f3180b93062a':
|
||||||
|
return redir_default()
|
||||||
|
except Exception as exc:
|
||||||
|
print('Gravatar test url fetch failed: %s' % exc)
|
||||||
|
|
||||||
gravatar_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \
|
gravatar_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \
|
||||||
+ '?s=%i' % size
|
+ '?s=%i' % size
|
||||||
|
|
||||||
@@ -226,14 +245,17 @@ class GravatarProxyView(View):
|
|||||||
print(
|
print(
|
||||||
'Gravatar fetch failed with an unexpected %s HTTP error' %
|
'Gravatar fetch failed with an unexpected %s HTTP error' %
|
||||||
exc.code)
|
exc.code)
|
||||||
|
return redir_default()
|
||||||
except URLError as exc:
|
except URLError as exc:
|
||||||
print(
|
print(
|
||||||
'Gravatar fetch failed with URL error: %s' %
|
'Gravatar fetch failed with URL error: %s' %
|
||||||
exc.reason)
|
exc.reason)
|
||||||
|
return redir_default()
|
||||||
except SSLError as exc:
|
except SSLError as exc:
|
||||||
print(
|
print(
|
||||||
'Gravatar fetch failed with SSL error: %s' %
|
'Gravatar fetch failed with SSL error: %s' %
|
||||||
exc.reason)
|
exc.reason)
|
||||||
|
return redir_default()
|
||||||
try:
|
try:
|
||||||
data = BytesIO(gravatarimagedata.read())
|
data = BytesIO(gravatarimagedata.read())
|
||||||
img = Image.open(data)
|
img = Image.open(data)
|
||||||
@@ -244,9 +266,7 @@ class GravatarProxyView(View):
|
|||||||
|
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
print('Value error: %s' % exc)
|
print('Value error: %s' % exc)
|
||||||
|
return redir_default()
|
||||||
|
|
||||||
# TODO: In case anything strange happens, we need to redirect to the default
|
# We shouldn't reach this point... But make sure we do something
|
||||||
url = reverse_lazy(
|
return redir_default()
|
||||||
'avatar_view',
|
|
||||||
args=[kwargs['digest']]) + '?s=%i' % size + '&forcedefault=y'
|
|
||||||
return HttpResponseRedirect(url)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user