List Info

Thread: Catalyst::View::Email patch courtesy of the one and only.




Catalyst::View::Email patch courtesy of the one and only.
user name
2007-07-27 17:06:38
added verbosity to error to reflect nested args ie AoH
throwing off error check

fixed typo in docs, mailer_args is supposed to be an array
not a hash,
now yaml shows it.

removed old * for ->sender->
we now support the documented fashion!! but we carp -
because it isn't
supported by Email::Send ie we now coerce into ArrayRef is
HashRef is
supplied.

We also croak if neither HashRef nor ArrayRef is supplied

We now check that Host is supplied if the ->mailer is
SMTP


diff --git a/Email.pm b/Email.pm
index e4be27c..b422e54 100644
--- a/Email.pm
+++ b/Email.pm
 -35,9
+35,12  In your app configuration (example in
L<YAML>):
             method:     SMTP
             # mailer_args is passed directly into
Email::Send
             mailer_args:
-                - Host:       smtp.example.com
-                - username:   username
-                - password:   password
+                - Host
+                - smtp.example.com
+                - username
+                - mySMPTUsername
+                - password
+                - mySMTPPassword

 =cut

 -110,24
+113,64  Then, Catalyst::View::Email will forward to your
View::TT by default.

 sub new {
     my $self = shift->next::method(_);
-
     my ( $c, $arguments ) = _;

     my $mailer = Email::Send->new;

-    if ( my $method = $self->sender-> ) {
-        croak "$method is not supported, see
Email::Send"
-            unless $mailer->mailer_available($method);
-        $mailer->mailer($method);
-    } else {
-        # Default case, run through the most likely options
first.
-        for ( qw/SMTP Sendmail Qmail/ ) {
-            $mailer->mailer($_) and last if
$mailer->mailer_available($_);
+    my $chosen_method;
+
+    ##
+    ##  If mailer is provided - check to make sure it is
avail.
+    ##
+    if ( $chosen_method = $self->sender-> )
{
+        croak "$chosen_method is not supported, see
Email::Send"
+            unless
$mailer->mailer_available($chosen_method)
+        ;
+        $mailer->mailer($chosen_method);
+    }
+
+    ##
+    ## Default case, run through the most likely options
first.
+    ##
+    else {
+        for my $default_method ( qw/SMTP Sendmail Qmail/ )
{
+            if ( $mailer->available($default_method) )
{
+              $mailer->mailer($default_method);
+              carp "Warning making assumption that
$default_method is
the desired method";
+              last;
+            }
         }
     }

-    if ( $self->sender-> ) {
-       
$mailer->mailer_args($self->sender->);

+    ##
+    ## Runtime checks to make sure that an Array is
provided if anything
+    ##
+    my $mailer_args = $self->sender->;
+    if ( $mailer_args ) {
+
+      if ( ref $mailer_args eq 'HASH' ) {
+        carp 'Attempting to coerce HashRef
-> '
+          . 'into Email::Send required ArrayRef'
+        ;
+        $mailer_args = [%{$mailer_args}];
+      }
+      elsif ( ref $mailer_args ne 'ARRAY' ) {
+        croak 'Please send something non-retarded for
->sender->';
+      }
+
+      ##
+      ## Further checks here against thine
->
+      ## Total bull shit Email::Send does not croak without
this
+      ##
+      my %hash_args = ( $mailer_args );
+      croak 'No -> provided with method SMTP, '
+        . 'check to make sure data structure sent to
->
is not nested'
+        if $chosen_method eq 'SMTP'
+        && !defined $hash_args
+      ;
+
+      $mailer->mailer_args( $mailer_args );
+
     }

     $self->mailer($mailer);



I am awesome.

-- 
Evan Carroll
System Lord of the Internets
meevancarroll.com
832-445-8877

_______________________________________________
Catalyst-dev mailing list
Catalyst-devlists.rawmode.org
http://lists.rawmode.org/mailman/listinfo/catalyst-dev


Re: Catalyst::View::Email patch courtesy of the one and only.
user name
2007-07-27 18:27:30
On Fri, Jul 27, 2007 at 05:06:38PM -0500, Evan Carroll
wrote:
> --- a/Email.pm
> +++ b/Email.pm
>  -35,9 +35,12  In your app configuration (example in
L<YAML>):
>              method:     SMTP
>              # mailer_args is passed directly into
Email::Send
>              mailer_args:
> -                - Host:       smtp.example.com
> -                - username:   username
> -                - password:   password
> +                - Host
> +                - smtp.example.com
> +                - username
> +                - mySMPTUsername
> +                - password
> +                - mySMTPPassword

Why are you doing this?

Regards,
Jonathan Rockway

_______________________________________________
Catalyst-dev mailing list
Catalyst-devlists.rawmode.org
http://lists.rawmode.org/mailman/listinfo/catalyst-dev


Re: Catalyst::View::Email patch courtesy of the one and only.
user name
2007-07-27 22:38:35
On 7/27/07, Evan Carroll <listsevancarroll.com> wrote:
> added verbosity to error to reflect nested args ie AoH
throwing off error check
>
> fixed typo in docs, mailer_args is supposed to be an
array not a hash,
> now yaml shows it.
>
> removed old * for ->sender->
> we now support the documented fashion!! but we carp -
because it isn't
> supported by Email::Send ie we now coerce into ArrayRef
is HashRef is
> supplied.
>
> We also croak if neither HashRef nor ArrayRef is
supplied
>
> We now check that Host is supplied if the ->mailer
is SMTP
>
>
> diff --git a/Email.pm b/Email.pm
> index e4be27c..b422e54 100644
> --- a/Email.pm
> +++ b/Email.pm
>  -35,9 +35,12  In your app configuration (example in
L<YAML>):
>              method:     SMTP
>              # mailer_args is passed directly into
Email::Send
>              mailer_args:
> -                - Host:       smtp.example.com
> -                - username:   username
> -                - password:   password
> +                - Host
> +                - smtp.example.com
> +                - username
> +                - mySMPTUsername
> +                - password
> +                - mySMTPPassword
>
>  =cut
>
>  -110,24 +113,64  Then,
Catalyst::View::Email will forward to your
> View::TT by default.
>
>  sub new {
>      my $self = shift->next::method(_);
> -
>      my ( $c, $arguments ) = _;
>
>      my $mailer = Email::Send->new;
>
> -    if ( my $method = $self->sender-> )
{
> -        croak "$method is not supported, see
Email::Send"
> -            unless
$mailer->mailer_available($method);
> -        $mailer->mailer($method);
> -    } else {
> -        # Default case, run through the most likely
options first.
> -        for ( qw/SMTP Sendmail Qmail/ ) {
> -            $mailer->mailer($_) and last if
$mailer->mailer_available($_);
> +    my $chosen_method;
> +
> +    ##
> +    ##  If mailer is provided - check to make sure it
is avail.
> +    ##
> +    if ( $chosen_method =
$self->sender-> ) {
> +        croak "$chosen_method is not supported,
see Email::Send"
> +            unless
$mailer->mailer_available($chosen_method)
> +        ;
> +        $mailer->mailer($chosen_method);
> +    }
> +
> +    ##
> +    ## Default case, run through the most likely
options first.
> +    ##
> +    else {
> +        for my $default_method ( qw/SMTP Sendmail
Qmail/ ) {
> +            if (
$mailer->available($default_method) ) {
> +              $mailer->mailer($default_method);
> +              carp "Warning making assumption
that $default_method is
> the desired method";
> +              last;
> +            }
>          }
>      }
>
> -    if ( $self->sender-> ) {
> -       
$mailer->mailer_args($self->sender->);

> +    ##
> +    ## Runtime checks to make sure that an Array is
provided if anything
> +    ##
> +    my $mailer_args =
$self->sender->;
> +    if ( $mailer_args ) {
> +
> +      if ( ref $mailer_args eq 'HASH' ) {
> +        carp 'Attempting to coerce HashRef
-> '
> +          . 'into Email::Send required ArrayRef'
> +        ;
> +        $mailer_args = [%{$mailer_args}];
> +      }
> +      elsif ( ref $mailer_args ne 'ARRAY' ) {
> +        croak 'Please send something non-retarded for
->sender->';
> +      }
> +
> +      ##
> +      ## Further checks here against thine
->
> +      ## Total bull shit Email::Send does not croak
without this
> +      ##
> +      my %hash_args = ( $mailer_args );
> +      croak 'No -> provided with method SMTP,
'
> +        . 'check to make sure data structure sent to
->
> is not nested'
> +        if $chosen_method eq 'SMTP'
> +        && !defined $hash_args
> +      ;
> +
> +      $mailer->mailer_args( $mailer_args );
> +
>      }
>
>      $self->mailer($mailer);
>
>
>
> I am awesome.
>

Your style changes are not going to be accepted.

Adding in the type check on mailer_args is a good idea, and
is implemented.

The croak on Host not being specified is just plain dumb. 
That
doesn't belong here, that belongs in Email::Send::SMTP, and
they
default to 'localhost'.  This is pretty common (although
undocumented)
behavior.  I'd recommend you file a ticket against
Email::Send::SMTP
asking them to document or change behavior to suit your
desires.

I'm not going to change their behavior, since I do
specifically state
that Catalyst::View::Email is a gateway to Email::Send.  I
will,
however, point it out in the Pod.

-Jay

-- 
J. Shirley :: jshirleygmail.com :: Killing two stones with one
bird...
http://www.toeat.com

_______________________________________________
Catalyst-dev mailing list
Catalyst-devlists.rawmode.org
http://lists.rawmode.org/mailman/listinfo/catalyst-dev


[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )