source: perl/modules/Twitter/lib/BarnOwl/Message/Twitter.pm @ ba7ac0d

Last change on this file since ba7ac0d was ba7ac0d, checked in by Edward Z. Yang <ezyang@cs.stanford.edu>, 10 years ago
Fix quoting conventions for Twitter commands. Two bugs here: 1. The documentation incorrectly implies that arguments can be omitted, when really the argument parser is much dumber than that. If there are two optional arguments, you can't omit the first one and give the second one; that's ambiguous. 2. There is a codepath for replycmd when status_id is not set (this should be impossible) which passed wrong arguments. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
  • Property mode set to 100644
File size: 1.5 KB
Line 
1use warnings;
2use strict;
3
4=head1 NAME
5
6BarnOwl::Message::Twitter
7
8=head1 DESCRIPTION
9
10=cut
11
12package BarnOwl::Message::Twitter;
13use base qw(BarnOwl::Message);
14
15sub context {'twitter'}
16sub subcontext {undef}
17sub service { return (shift->{"service"} || "http://twitter.com"); }
18sub account { return shift->{"account"}; }
19sub retweeted_by { shift->{retweeted_by}; }
20sub long_sender {
21    my $self = shift;
22    $self->service =~ m#^\s*(.*?://.*?)/.*$#;
23    my $service = $1 || $self->service;
24    my $long = $service . '/' . $self->sender;
25    if ($self->retweeted_by) {
26        $long = "(retweeted by " . $self->retweeted_by . ") $long";
27    }
28    return $long;
29}
30
31sub replycmd {
32    my $self = shift;
33    if($self->is_private) {
34        return $self->replysendercmd;
35    } elsif(exists($self->{status_id})) {
36        return BarnOwl::quote('twitter-atreply', $self->sender, $self->{status_id}, $self->account);
37    } else {
38        # Give a dummy status ID
39        return BarnOwl::quote('twitter-atreply', $self->sender, '', $self->account);
40    }
41}
42
43sub replysendercmd {
44    my $self = shift;
45    return BarnOwl::quote('twitter-direct', $self->sender, $self->account);
46}
47
48sub smartfilter {
49    my $self = shift;
50    my $inst = shift;
51    my $filter;
52
53    if($inst) {
54        $filter = "twitter-" . $self->sender;
55        BarnOwl::command("filter", $filter,
56                         qw{type ^twitter$ and sender}, '^'.$self->sender.'$');
57    } else {
58        $filter = "twitter";
59    }
60    return $filter;
61}
62
631;
Note: See TracBrowser for help on using the repository browser.