File Coverage

blib/lib/Mail/SendEasy/AUTH.pm
Criterion Covered Total %
statement 13 71 18.3
branch 0 46 0.0
condition 0 36 0.0
subroutine 5 14 35.7
pod 0 9 0.0
total 18 176 10.2


line stmt bran cond sub pod time code
1             #############################################################################
2             ## This file was generated automatically by Class::HPLOO/0.12
3             ##
4             ## Original file: ./lib/Mail/SendEasy/AUTH.hploo
5             ## Generation date: 2004-04-09 04:49:29
6             ##
7             ## ** Do not change this file, use the original HPLOO source! **
8             #############################################################################
9            
10             #############################################################################
11             ## Name: AUTH.pm
12             ## Purpose: Mail::SendEasy::AUTH
13             ## Author: Graciliano M. P.
14             ## Modified by:
15             ## Created: 2004-01-23
16             ## RCS-ID:
17             ## Copyright: (c) 2004 Graciliano M. P.
18             ## Licence: This program is free software; you can redistribute it and/or
19             ## modify it under the same terms as Perl itself
20             #############################################################################
21            
22            
23             { package Mail::SendEasy::AUTH ;
24            
25 1     1   11 use strict qw(vars) ; no warnings ;
  1     1   4  
  1         67  
  1         11  
  1         4  
  1         103  
26            
27             my (%CLASS_HPLOO) ;
28            
29             sub new {
30 0     0 0   my $class = shift ;
31 0           my $this = bless({} , $class) ;
32 1     1   8 no warnings ;
  1         14  
  1         447  
33 0           my $undef = \'' ;
34 0     0 0   sub UNDEF {$undef} ;
35 0 0         if ( $CLASS_HPLOO{ATTR} ) {
36 0           foreach my $Key ( keys %{$CLASS_HPLOO{ATTR}} ) {
  0            
37 0 0         tie( $this->{$Key} => 'Class::HPLOO::TIESCALAR' , $CLASS_HPLOO{ATTR}{$Key}{tp} , $CLASS_HPLOO{ATTR}{$Key}{pr} , \$this->{CLASS_HPLOO_ATTR}{$Key} ) if !exists $this->{$Key} ;
38 0 0         } } my $ret_this = defined &AUTH ? $this->AUTH(@_) : undef ;
39 0 0 0       if ( ref($ret_this) && UNIVERSAL::isa($ret_this,$class) ) {
    0          
40 0           $this = $ret_this ;
41 0 0 0       if ( $CLASS_HPLOO{ATTR} && UNIVERSAL::isa($this,'HASH') ) {
42 0           foreach my $Key ( keys %{$CLASS_HPLOO{ATTR}} ) {
  0            
43 0 0         tie( $this->{$Key} => 'Class::HPLOO::TIESCALAR' , $CLASS_HPLOO{ATTR}{$Key}{tp} , $CLASS_HPLOO{ATTR}{$Key}{pr} , \$this->{CLASS_HPLOO_ATTR}{$Key} ) if !exists $this->{$Key} ;
44             } } } elsif ( $ret_this == $undef ) {
45 0           $this = undef ;
46 0           } return $this ;
47             }
48            
49            
50 1     1   16 use vars qw($VERSION) ;
  1         4  
  1         1650  
51             $VERSION = '0.01' ;
52            
53             my %AUTH_TYPES = (
54             PLAIN => 1 ,
55             LOGIN => 1 ,
56             CRAM_MD5 => 0 ,
57             ) ;
58            
59             {
60 1     1   682 eval(q`use Digest::HMAC_MD5 qw(hmac_md5_hex)`) ;
  0            
  0            
61             $AUTH_TYPES{CRAM_MD5} = 1 if defined &hmac_md5_hex ;
62             }
63            
64             sub AUTH {
65 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
66 0           my $user = shift(@_) ;
67 0           my $pass = shift(@_) ;
68 0           my @authtypes = @_ ;
69 0           @_ = () ;
70            
71 0           my $auth_sub ;
72 0           foreach my $auth ( @authtypes ) {
73 0           my $name = uc($auth) ;
74 0 0         if ( $AUTH_TYPES{$name} ) { $auth_sub = $name ; last ;}
  0            
  0            
75             }
76            
77 0 0 0       $auth_sub = 'PLAIN' if !@authtypes && !$auth_sub ;
78            
79 0 0 0       return UNDEF if !$auth_sub || $user eq '' || $pass eq '' ;
      0        
80            
81 0           $this->{USER} = $user ;
82 0           $this->{PASS} = $pass ;
83 0           $this->{AUTHSUB} = $auth_sub ;
84             }
85            
86 0 0 0 0 0   sub type { my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ; $this->{AUTHSUB} }
  0            
87            
88             sub start {
89 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
90            
91 0           my $start = $this->{AUTHSUB} . "_start" ;
92 0 0         return &$start($this , @_) if defined &$start ;
93 0           return ;
94             }
95            
96             sub step {
97 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
98            
99 0           my $step = $this->{AUTHSUB} . "_step" ;
100 0 0         return &$step($this , @_) if defined &$step ;
101 0           return ;
102             }
103            
104             #############
105            
106             sub PLAIN_start {
107 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
108            
109 0 0         my @parts = map { defined $this->{$_} ? $this->{$_} : ''} qw(USER USER PASS);
  0            
110 0           return join("\0", @parts) ;
111             }
112            
113             #############
114            
115             sub LOGIN_step {
116 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
117 0           my $string = shift(@_) ;
118            
119 0 0         $string =~ /password/i ? $this->{PASS} :
    0          
120             $string =~ /username/i ? $this->{USER} :
121             '' ;
122             }
123            
124             #############
125            
126             sub CRAM_MD5_step {
127 0 0 0 0 0   my $this = ref($_[0]) && UNIVERSAL::isa($_[0],'UNIVERSAL') ? shift : undef ;
128 0           my $string = shift(@_) ;
129            
130 0 0         my ($user, $pass) = map { defined $this->{$_} ? $this->{$_} : '' } qw(USER PASS) ;
  0            
131 0           $user . " " . hmac_md5_hex($string,$pass);
132 0           return $user ;
133             }
134            
135            
136             }
137            
138            
139             1;
140            
141             __END__