App-Twimap

 view release on metacpan or  search on metacpan

lib/App/Twimap/Tweet.pm  view on Meta::CPAN

package App::Twimap::Tweet;
use Moose;
use DateTime;
use DateTime::Format::Strptime;
use Email::Date::Format qw(email_date);
use HTML::Entities;
use Text::Wrap qw(wrap);

has 'data'        => ( is => 'ro', isa => 'HashRef', required => 1 );
has 'expand_urls' => ( is => 'ro', isa => 'Bool',    default  => 1 );
has 'oembed_urls' => ( is => 'ro', isa => 'Bool',    default  => 1 );

my $_parser = DateTime::Format::Strptime->new(
    pattern  => '%a %b %d %T %z %Y',
    locale   => 'en_GB',
    on_error => 'croak',
);

sub id {
    my $self  = shift;
    my $tweet = $self->data;
    return $tweet->{id_str};
}

sub in_reply_to_status_id {
    my $self  = shift;
    my $tweet = $self->data;
    return $tweet->{in_reply_to_status_id_str};
}

sub to_email {
    my $self  = shift;
    my $tweet = $self->data;

    my $tid = $self->id;

    my $epoch       = $_parser->parse_datetime( $tweet->{created_at} )->epoch;
    my $date        = email_date($epoch);
    my $name        = $tweet->{user}->{name};
    my $screen_name = $tweet->{user}->{screen_name};

    my $in_reply_to_status_id = $self->in_reply_to_status_id;
    my $in_reply_to
        = $in_reply_to_status_id
        ? "<$in_reply_to_status_id\@twitter>"
        : '';
    my $url = "https://twitter.com/$screen_name/status/$tid";
    my $text;
    if ( $tweet->{retweeted_status} ) {
        $text
            = 'RT @'
            . $tweet->{retweeted_status}->{user}->{screen_name} . ': '
            . $tweet->{retweeted_status}->{text};
    } else {
        $text = $tweet->{text};
    }

    my $subject        = $text;
    my $subject_offset = 0;
    my $text_offset    = 0;

    my $oembed = '';

    if ( $tweet->{entities} && $tweet->{entities}->{urls} ) {
        foreach my $entity ( @{ $tweet->{entities}->{urls} } ) {

            my $expanded_url = $entity->{expanded_url} || $entity->{url};
            next unless $expanded_url;
            $expanded_url = $self->expand_url($expanded_url)



( run in 0.687 second using v1.01-cache-2.11-cpan-ceb78f64989 )