]> ruin.nu Git - NDIRC.git/commitdiff
Converted SMS
authorMichael Andreen <harv@ruin.nu>
Sat, 5 Dec 2009 23:13:12 +0000 (00:13 +0100)
committerMichael Andreen <harv@ruin.nu>
Sat, 5 Dec 2009 23:13:12 +0000 (00:13 +0100)
Commands/SMS.pm

index eba2d650b72d79919f99a67cd83b1830a2d30e5d..452e31754d21e472fc182d93d9c7a957f99537c9 100644 (file)
 #   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
 #**************************************************************************/
 
-package NDIRC::Commands::SMS;
-
 use strict;
 use warnings;
 use feature ':5.10';
 
-use Moose;
-use MooseX::MethodAttributes;
-
+use MooseX::Declare;
+use NDIRC::Dispatcher;
 
-sub sendsms
-       : Help(.sendsms <username or number> message | number has to be an international number, like +44234234562 for a uk number or +1234528234 for a north american number)
-       : ACL(irc_sendsms)
-       : Type(member)
-{
-       my ($self,$c,$msg) = @_;
-       my ($number,$message) = $msg =~ /^(\S+) (.+)$/ or die 'ARGS';
-       my $dbh = $c->model;
+command sendsms => {
+       help => q(.sendsms <username or number> message | number has to be an international number, like +44234234562 for a uk number or +1234528234 for a north american number),
+       acl => q(irc_sendsms),
+       type => q(member),
+}, class extends NDIRC::Command {
+       method execute($c,$msg) {
+               my ($number,$message) = $msg =~ /^(\S+) (.+)$/ or die 'ARGS';
+               my $dbh = $c->model;
 
-       if (length $message > 140){
-               $c->reply("Message is too long");
-               return;
-       }
-       if ($number =~ /^\+([1-9]\d+)$/){
-               $number = $1;
-       }else{
-               my ($sms) = $dbh->selectrow_array(q{
-SELECT sms FROM users WHERE username ilike $1
-       AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M')
-                       },undef,$number);
-               $sms //= 'No number, or invalid user';
-               if ($sms =~ /^\+([1-9]\d+)$/){
+               if (length $message > 140){
+                       $c->reply("Message is too long");
+                       return;
+               }
+               if ($number =~ /^\+([1-9]\d+)$/){
                        $number = $1;
                }else{
-                       $c->reply("User $number has number '$sms' which is not a valid international number");
-                       return;
+                       my ($sms) = $dbh->selectrow_array(q{
+SELECT sms FROM users WHERE username ilike $1
+       AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M')
+                               },undef,$number);
+                       $sms //= 'No number, or invalid user';
+                       if ($sms =~ /^\+([1-9]\d+)$/){
+                               $number = $1;
+                       }else{
+                               $c->reply("User $number has number '$sms' which is not a valid international number");
+                               return;
+                       }
                }
-       }
-       my $sms = $dbh->prepare(q{
+               my $sms = $dbh->prepare(q{
 INSERT INTO sms (uid,number,message)
 VALUES($1,$2,$3)
 RETURNING id
-               });
-       $sms->execute($c->uid,$number,$message);
-       my ($id) = $sms->fetchrow_array;
-       $c->reply("Message added to queue, you can see the status with: .smsstatus $id");
-}
+                       });
+               $sms->execute($c->uid,$number,$message);
+               my ($id) = $sms->fetchrow_array;
+               $c->reply("Message added to queue, you can see the status with: .smsstatus $id");
+       }
+};
 
-sub smsstatus
-       : Help(.smsstatus smsid | Gives information about a given sms)
-       : ACL(irc_smsstatus)
-       : Type(member)
-{
-       my ($self,$c,$msg) = @_;
-       my ($id) = $msg =~ /(\d+)/ or die 'ARGS';
-       my $dbh = $c->model;
+command smsstatus => {
+       help => q(.smsstatus smsid | Gives information about a given sms),
+       acl => q(irc_smsstatus),
+       type => q(member),
+}, class extends NDIRC::Command {
+       method execute($c,$msg) {
+               my ($id) = $msg =~ /(\d+)/ or die 'ARGS';
+               my $dbh = $c->model;
 
-       my $sms = $dbh->selectrow_hashref(q{
+               my $sms = $dbh->selectrow_hashref(q{
 SELECT s.id, u.username, s.number, s.status, s.cost
        ,s.time AT TIME ZONE 'GMT' AS time
 FROM sms s
        JOIN users u USING (uid)
 WHERE id = $1
-               }, undef, $id);
+                       }, undef, $id);
 
-       if($sms->{id}){
-               $c->reply("SMS <b>$sms->{id}</b> was sent by <b>$sms->{username}</b> to <b>$sms->{number}</b> cost: <b>$sms->{cost}</b>. Last status at <b>$sms->{time}</b>: $sms->{status}");
-       }else{
-               $c->reply("Could not find any sms with id: $id");
+               if($sms->{id}){
+                       $c->reply("SMS <b>$sms->{id}</b> was sent by <b>$sms->{username}</b> to <b>$sms->{number}</b> cost: <b>$sms->{cost}</b>. Last status at <b>$sms->{time}</b>: $sms->{status}");
+               }else{
+                       $c->reply("Could not find any sms with id: $id");
+               }
        }
-}
+};
 
 1;