root/lang/perl/WWW-Hatena-IconURL/trunk/lib/WWW/Hatena/IconURL.pm

Revision 26127, 2.7 kB (checked in by drry, 4 years ago)
  • fixed a regex.
Line 
1package WWW::Hatena::IconURL;
2
3use warnings;
4use strict;
5
6use version; our $VERSION = qv('1.0.1');
7
8use URI;
9
10sub new {
11    my $class = shift;
12    my $id    = shift;
13    return '' unless $class->_check_id($id);
14    return bless { 'id' => $id }, $class;
15}
16
17sub id {
18    my $self = shift;
19    return $self->{id};
20}
21
22sub icon {
23    my $self = shift;
24    return URI->new(
25        "http://www.hatena.ne.jp/users/".substr($self->{id}, 0, 2)."/$self->{id}/profile.gif"
26    ) if $self->{id};
27    return '';
28}
29
30sub icon_s {
31    my $self = shift;
32    return URI->new(
33        "http://www.hatena.ne.jp/users/".substr($self->{id}, 0, 2)."/$self->{id}/profile_s.gif"
34    ) if $self->{id};
35    return '';
36}
37
38sub _check_id {
39    my $self = shift;
40    my $id   = shift;
41    return 1 if $id =~ /^[a-zA-Z][-a-zA-Z0-9_]{1,30}[a-zA-Z0-9]$/;
42}
43
441;
45
46__END__
47
48
49=head1 NAME
50
51WWW::Hatena::IconURL - build URL of user's icon at Hatena.
52
53
54=head1 SYNOPSIS
55
56    use WWW::Hatena::IconURL;
57
58    my $hatena = WWW::Hatena::IconURL->new("id_hoge");
59    print $hatena->icon;
60
61
62=head1 METHOD
63
64=over
65
66=item new(I<$hatena_id>)
67
68constructor
69
70=item id
71
72get current id
73
74=item icon
75
76build icon URL
77
78=item icon_s
79
80build small icon URL
81
82=back
83
84
85=head1 AUTHOR
86
87Dai Okabayashi  C<< <genkivogue@ybb.ne.jp> >>
88
89
90=head1 LICENCE AND COPYRIGHT
91
92Copyright (c) 2008, Dai Okabayashi C<< <genkivogue@ybb.ne.jp> >>. All rights reserved.
93
94This module is free software; you can redistribute it and/or
95modify it under the same terms as Perl itself. See L<perlartistic>.
96
97
98=head1 DISCLAIMER OF WARRANTY
99
100BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
101FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
102OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
103PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
104EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
105WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
106ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
107YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
108NECESSARY SERVICING, REPAIR, OR CORRECTION.
109
110IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
111WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
112REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
113LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
114OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
115THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
116RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
117FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
118SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
119SUCH DAMAGES.
120
121=cut
Note: See TracBrowser for help on using the browser.