Skip to content

Commit

Permalink
fix up gravatars urls in gravatar fallback params
Browse files Browse the repository at this point in the history
  • Loading branch information
haarg committed Nov 26, 2015
1 parent 16beff1 commit b1e0341
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 29 deletions.
44 changes: 23 additions & 21 deletions lib/MetaCPAN/Web/View/HTML.pm
Expand Up @@ -186,28 +186,30 @@ Template::Alloy->define_vmethod(
}
);

Template::Alloy->define_vmethod(
'text',
gravatar_fixup => sub {
my ( $url, $size ) = @_;
if ( $url
=~ m{^https?://([a-z0-9.-]+\.)?gravatar\.com/(avatar|userimage)/}i
)
{
my $url = URI->new($url);
$url->scheme('https');
$url->host('secure.gravatar.com');
if ($size) {
$url->query_param( s => $size );
}
else {
$url->query_param_delete('s');
}
return $url->as_string;
sub gravatar_fixup {
my ( $url, $size ) = @_;
if ( $url
=~ m{^https?://([a-z0-9.-]+\.)?gravatar\.com/(avatar|userimage)/}i )
{
my $url = URI->new($url);
$url->scheme('https');
$url->host('secure.gravatar.com');
if ($size) {
$url->query_param( s => $size );
}
return $url;
},
);
else {
$url->query_param_delete('s');
}
if ( my $fallback = $url->query_param('d') ) {
$url->query_param( d => gravatar_fixup( $fallback, $size ) );
}
return $url->as_string;
}
return $url;
}

Template::Alloy->define_vmethod( 'text',
gravatar_fixup => \&gravatar_fixup, );

Template::Alloy->define_vmethod(
'text',
Expand Down
28 changes: 20 additions & 8 deletions root/static/js/contributors.js
@@ -1,4 +1,23 @@
$(function(){
function gravatar_fixup ( av, size ) {
av = av.replace(
/^https?:\/\/([a-z0-9.-]+\.)?gravatar\.com\//i,
"https://secure.gravatar.com/",
);
av = av.replace(
/([;&?])s=\d+/,
'$1s=20'
);
av = av.replace(
/([;&?]d=)([^;&?]+)/,
function (match, param, fallback) {
var url = decodeURIComponent(fallback);
url = gravatar_fixup(url);
return(param + encodeURIComponent(url));
}
);
return av;
}
function updateContrib ( li, data ){
if (!data.name) {
return;
Expand All @@ -15,14 +34,7 @@ $(function(){

var gravatar = data.gravatar_url;
if (gravatar) {
gravatar = gravatar.replace(
"^https?://([a-z0-9.-]+\.)?gravatar\.com/",
"https://secure.gravatar.com/",
"i"
).replace(
/s=\d+/,
's=20'
);
gravatar = gravatar_fixup(gravatar);

var img = $('<img />')
.attr( 'width', 20 )
Expand Down

0 comments on commit b1e0341

Please sign in to comment.