Messing with common i18n modules.
[blog.pm.git] / lib / Blog / Helper / Gravatar.pm
blob21d5483cf65352b19552a388d814d6a91294524b
1 package Blog::Helper::Gravatar;
3 use strict;
5 use Digest::MD5 ();
6 use URI::Escape ();
8 use base 'Blog::Helper';
10 my $gravatar_base = "http://www.gravatar.com/avatar.php";
12 sub new {
13 my $self = shift;
15 $self = $self->next::method( @_ );
17 my $conf = $self->{ c }->config->{ gravatar };
19 $self->{ base } = $conf->{ base } || $gravatar_base;
21 my $default = $conf->{ default };
22 if ( $default !~ m/^http/x ) {
23 $default =~ s/^\///;
24 $default = $self->{ c }->req->base . $default;
26 $self->{ default } = $default;
27 $self->{ default_escaped } = URI::Escape::uri_escape( $default );
29 $self->{ rating } = $conf->{ rating } || 'G';
30 $self->{ size } = $conf->{ size } || 80;
31 $self->{ border } = $conf->{ border } || undef;
33 return $self;
36 sub url {
37 my ( $self, $email ) = @_;
39 return $self->{ default } unless $email;
41 my $args = {
42 gravatar_id => Digest::MD5::md5_hex( $email ),
43 default => $self->{ default_escaped },
44 rating => $self->{ rating },
45 size => $self->{ size },
46 border => $self->{ border }
49 my @pairs;
50 for my $key ( keys %$args ) {
51 next unless $args->{ $key };
52 push @pairs, join( '=', $key, $args->{ $key } );
55 return join( '?', $self->{ base }, join( '&', @pairs ) );
58 =head1 AUTHOR
60 vti
62 =head1 LICENSE
64 This library is free software, you can redistribute it and/or modify
65 it under the same terms as Perl itself.
67 =cut