App-Siesh

 view release on metacpan or  search on metacpan

lib/Net/ManageSieve/Siesh.pm  view on Meta::CPAN

package Net::ManageSieve::Siesh;

use warnings;
use strict;
use autodie qw(:all);
use File::Temp qw/tempfile/;
use Net::ManageSieve;
use IO::Prompt;
use parent qw(Net::ManageSieve);

sub starttls {
    my ( $self, @args ) = @_;
    if ( $self->debug() ) {
        eval {
            require IO::Socket::SSL;
            IO::Socket::SSL->import('debug3');
            1;
        } or do {
            die "Cannot load module IO::Socket::SSL\n";
          }
    }
    return $self->SUPER::starttls(@args);
}

sub movescript {
    my ( $self, $source, $target ) = @_;
    my $is_active = $self->is_active($source);

    ## We can't delete a active script, so we just deactivate it ...
    $self->deactivate() if $is_active;

    $self->copyscript( $source, $target );
    $self->deletescript($source);

    ## ... and activate the target later
    $self->setactive($target) if $is_active;
    return 1;
}

sub copyscript {
    my ( $self, $source, $target ) = @_;
    my $content = $self->getscript($source);
    return $self->putscript( $target, $content );
}

sub temp_scriptfile {
    my ( $self, $script, $create ) = @_;
    my ( $fh, $filename );
    eval { ( $fh, $filename ) = tempfile( UNLINK => 1 ); 1; } or do { die $@ };

    my $content = '';
    if ( $self->script_exists($script) ) {
        $content = $self->getscript($script);
    }
    elsif ( !$create ) {
        die "Script $script does not exists.\n";
    }

    print {$fh} $content;
    seek $fh, 0, 0;
    return $fh, $filename;
}

sub putfile {
    my ( $self, $file, $name ) = @_;
    my $script;
    open( my $fh, '<', $file );
    { local $/ = undef, $script = <$fh> }
    close $fh;
    my $length = length $script;
    $self->havespace( $name, $length );
    return $self->putscript( $name, $script );
}

sub getfile {
    my ( $self, $name, $file ) = @_;
    my $script = $self->getscript($name);
    open( my $fh, '>', $file );
    print {$fh} $script;



( run in 2.069 seconds using v1.01-cache-2.11-cpan-6aa56a78535 )