#!/usr/bin/perl -Tw

use 5.00503;
use strict;
use warnings;

our $VERSION = 20100301.0; # by Stelios Gikas

use FindBin;
use lib do { $FindBin::Bin =~ /(.*)/; $1 };
use noris::IO::AutoEncoding qw(:auto);
use noris::SMS 'normalize_numbers';

my %param;
while ( defined( my $key = shift ) ) {
    my $number = $key =~ s/=(\d+)$// ? $1 : 1;
    die qq(Not enough ($number) arguments left for "$key".\n)
      if @ARGV < $number;
    $param{$key} =
      $number > 1 || defined $param{$key}
      ? [
        ref $param{$key} ? @{ $param{$key} } : $param{$key},
        splice @ARGV, 0, $number
      ]
      : shift;
}

unless ( my $sms = new noris::SMS %param ) {
    die "Error initializing noris::SMS object: $sms\n";
}
else {
    unless ( @{ $sms->data } ) {
        local $/;
        $sms->data = [<STDIN>];
    }
    normalize_numbers @{ $sms->dest };
    unless ( my $result = $sms->send ) {
        my $sent = $result->sent || 0;
        die "After having sent $sent SM"
          . ( $sent != 1 && 's' )
          . ": $result\n";
    }
}

=head1 NAME

send_sms - Frontend zu L<noris::SMS>

=head1 SYNOPSE

  send_sms data 'Das ist der Rand von Ostermundigen.' \
           dest=2 0170-7935715 '+49 177 7777112'

  echo Oder so. | send_sms dest +49-170-7935715

=head1 BESCHREIBUNG

Dieses Script dient zum einfachen Versand von SMs unter Zuhilfenahme von
L<noris::SMS>.

Alle bergebenen Parameter werden direkt an dieses Modul verfttert, d. h.
send_sms erwartet auf der Kommandozeile eine Liste von abwechselnd
Schlsselwrtern und zugehrigen Werten.

Um mehrere Werte unter einem Schlsselwort bergeben zu knnen, kann wahlweise
mehrfach das gleiche Schlsselwort angegeben werden oder mit SCHLUESSELWORT=N
angegeben werden, dass die nchsten N Parameter zu diesem Schlsselwort gehren
(vgl. L<Beispiel oben|/SYNOPSE>).

Wird I<kein> zu versendender Text (unter Parameter "data") auf der
Kommandozeile bergeben, so liest send_sms diesen von der Standardeingabe.

Angegebene Rufnummern werden automatisch
L<normalisiert|noris::SMS/normalize_numbers>.

=head1 AUTOR

 Martin H. Sluka
 <fany@noris.net>
 fr die noris network AG

=cut

