The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Net::Social::Mapper::Persona::Website;

use strict;
use base qw(Net::Social::Mapper::Persona);
use URI;
use Feed::Find;

=head1 NAME

Net::Social::Mapper::Persona::Website - the persona for a website

=head2 SYNOPSIS

See C<Net::Social::Mapper>

=cut
sub _init {
    my $self  = shift;
    $self->{service}  = 'website';
    $self->{name}     = 'Website';
    my $url           = $self->_normalise_url($self->{user}) || return undef;
    $self->{user}     = $url->as_string;
    $self->{user}     =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
    $self->{homepage} = $self->{user};
    $self->{domain}   = $url->authority;
    return $self;
}

=head2 feeds 

Get the feeds for this website.

=cut
sub feeds {
    my $self  = shift;
    $self->{feeds} = [ $self->mapper->_get_feeds($self->{homepage}) ] unless defined $self->{feeds}; 
    return $self->SUPER::feeds();
}

sub _normalise_url {
    my $self = shift;
    my $url  = shift || return;
    $url     = "http://$url" unless $url =~ m![a-z]+:\/\/!i;
    $url     = URI->new($url);
}

=head2 persona_name

The short canonical name for this persona

=cut
sub persona_name { shift->_do('user', @_) }
1;