File Coverage

blib/lib/SMS/Send/Sergel/Simple/HTTP.pm
Criterion Covered Total %
statement 15 33 45.4
branch 0 8 0.0
condition 0 11 0.0
subroutine 5 7 71.4
pod 2 2 100.0
total 22 61 36.0


line stmt bran cond sub pod time code
1             package SMS::Send::Sergel::Simple::HTTP;
2              
3             # ABSTRACT: SMS::Send driver for Sergel simple http service
4              
5 1     1   13842 use HTTP::Tiny;
  1         34640  
  1         31  
6 1     1   413 use URI::Escape;
  1         898  
  1         48  
7 1     1   5 use base 'SMS::Send::Driver';
  1         1  
  1         434  
8 1     1   263 use strict;
  1         1  
  1         14  
9 1     1   2 use warnings;
  1         1  
  1         251  
10             our $VERSION = '0.02';
11              
12             sub new {
13 0     0 1   my ($class, %args) = @_;
14              
15 0 0 0       unless (
      0        
      0        
16             $args{'_login'}
17             && $args{'_password'}
18             && $args{'_source'}
19             && $args{'_serviceid'}
20             ) {
21 0           die << "eof";
22             $class needs hash with non empty values:
23             _serviceid: $args{_serviceid}
24             _login: $args{_login}
25             _password: $args{_password}
26             _source: $args{_source}
27             eof
28             }
29              
30 0           my $self = bless {%args}, $class;
31 0   0       $self->{base_url} = $args{_url} // 'https://ws1.sp247.net/smscsimplehttp';
32 0           return $self;
33             }
34              
35             sub send_sms {
36 0     0 1   my ($self, %args) = @_;
37             my $query = $self->{base_url}
38             . '?ServiceId=' . $self->{_serviceid}
39             . '&Username=' . $self->{_login}
40             . '&Password=' . $self->{_password}
41             . '&Destination=' . uri_escape($args{'to'})
42             . '&Source=' . uri_escape($self->{_source})
43 0           . '&Userdata=' . uri_escape($args{'text'});
44              
45 0           my $response = HTTP::Tiny->new->get($query);
46              
47 0 0         if ($self->{_debug}) {
48 0           return $response;
49             }
50              
51 0 0         if ($response->{success}) {
52 0           my ($resultCode, $resultDescription, $messageId) = split /;/, $response->{content};
53 0           my $OK_codes = {
54             1000 => 'Sent',
55             1001 => 'Delivered',
56             1005 => 'Queued',
57             };
58              
59 0 0         if (exists($OK_codes->{$resultCode})) {
60 0           return 1;
61             } else {
62 0           return 0;
63             }
64             } else {
65 0           return 0;
66             }
67             }
68              
69             1;
70              
71             __END__