|
Developer's arenaTRex::Storage::EMail |
TRex::Storage::EMail - provides e-mail storage services
use SOAP::Lite;
my $handler = SOAP::Lite
-> uri('TRex/Storage/EMail')
-> proxy('http://'.$HOST .':'. $PORT .'/')
-> on_fault(sub { my($soap, $res) = @_;
die ref $res ? $res->faultstring : $soap->transport->status, "\n";
});
Basically allows the e-mail store in a flat folder based structure, that doesn't allow the creation of folders containing folders, where each e-mail must be asociated (or stored into) an existing folder.
All methods, except authGetMethods, expect the parameters ``authentication method'' (authMethod), and the authentication parameters. It should be enough to pass them once, but no persistence mechanism has been implemented (yet !).
Usage:
use TRex::Storage::EMail;
my $authMethod = 'AMAIL';
my $aMail_ID = 'bit-man';
my $SID = obtainedThroguhPAM();
my $name = "myNewFolder";
my @authParams;
push @authParams, $aMail_ID;
push @authParams, $SID;
### ... handler creation via new() ...
die "Crash !!!!\n"
unless $handler->authAuthenticate( $authMethod, @authParams)->result;
die "Can't create folder $name\n"
unless $handler->folderCreate( $name, $authMethod, @authParams)->result;
All the methods return 0 (zero) on success, and not zero on error (each error meaning is specified in each function documentation). The common error numbers, to all functions, are :
authGetMethods()Return the supported authentication methods as an array.
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
my @auth_methods = $handler->authGetMethods()->result;
authAuthenticate($@)Return a PAM_* error (see TRex::PAM module) in case of error, if AMAIL authentication is used. Zero in case of success.
Returns 3 if an unsupported authentication method is passed.
Usage:
use SOAP::Lite;
my $authMethod = 'USR_PWD';
my $user = 'bit-man';
my $pass = 'secret';
my @authParams;
push @authParams, $user;
push @authParams, $pass;
### ... handler creation via new() ...
die "Can't authenticate !!!!\n"
unless ! $handler->authAuthenticate( $authMethod, @authParams)->result;
folderCreate($@)Creates a folder
Returns :
Usage:
use SOAP::Lite;
my $name = 'myFolder';
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
die "Can't create folder $name !!!!\n"
unless ! $handler->folderCreate( $name,
$authMethod, @authParams )->result;
folderDestroy($@)Erases a folder
Returns :
Usage:
use SOAP::Lite;
my $name = 'myFolder';
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
die "Can't delete folder $name !!!!\n"
unless ! $handler->folderDestroy( $name,
$authMethod, @authParams )->result;
folderRename($$@)Renames a folder
Returns :
Usage:
use SOAP::Lite;
my $name = 'myFolder';
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
die "Can't delete folder $name !!!!\n"
unless ! $handler->folderDestroy( $name,
$authMethod, @authParams )->result;
folderRetrieve($@)Retrieves a folder contents
Returns :
... and a list with the MIDs (Message IDs) contained in the folder and its attributes with the next format :
... and so on
Usage:
use SOAP::Lite;
my $name = 'myFolder';
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
die "Can't retrieve folder $name contents !!!!\n"
unless ! $handler->folderRetrieve( $name,
$authMethod, @authParams )->result;
folderList(@)Retrieves the repository contents (folder list).
Returns the errors as listed in ``return values'' ... and an array with the folders contained in the repositorty and its attributes, all in an array with the next format:
... and so on
Usage:
use SOAP::Lite;
my $name = 'myFolder';
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
my ($error, @folder) = $handler->folderList( $authMethod,
@authParams )->paramsall;
die "Crashhhh Folder listing ($error) !!!\n" if $error;
foreach ( @folder ) {
print "$_, ";
$i++;
if ( $i == 4 ) {
print "\n";
$i = 0;
}
}
msgStore(@)Retrieves the repository contents (folder list).
Returns the errors as listed in ``return values'' ... and the MID assigned to the message
Usage:
use SOAP::Lite;
my $folderName = 'myFolder';
my $msg = "Subject: Hi!\nHi Bobby\n";
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
my ($error, $MID) = $handler->msgStore( $folderName, $msg,
$authMethod, @authParams )->paramsall;
die "Crashhhh message storage ($error) !!!\n" if $error;
msgRetrieve($@)Retrieves a message
Returns :
... and the message specified by the MID parameter
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
($error, $message) = $handler->msgRetrieve( $MID,
$authMethod, @authParams )->paramsall;
die "Can't retrieve message $MID !!!!\n" if $error;
msgDelete($@)Deletes the messages passed in the MID list (it must be in the Trash folder). The MID list contains a comma separated MIDs to be deleted.
The errors returned are:
In case of a general error it is returned in the first variable (scalar) with an empty array as a second return value. If some of the messaged can be deleted (and some not) the global error is zero, and the error for each MID is returned as a list of errors, each one corresponding to each message in the MID list.
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
$MIDList = "234235,289645,178923";
($globalError, @error) = $handler->msgDelete( $MIDList,
$authMethod, @authParams )->paramsall;
die "A global error ocurred trying to delete $MIDList" if $globalError;
my @MID = split ',', $MIDList;
for ( my $i=0; $i < @error; $i++) {
print "Can't delete message $MID[$i] !!!!\n" if $error[$i];
};
msgMove($$@)Moves messages to a new folder
Returns :
In case of a general error it is returned in the first variable (scalar) with an empty array as a second return value. If some of the messaged can be moved (and some not) the global error is zero, and the error for each MID is returned as a list of errors, each one corresponding to each message in the MID list.
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
$MIDList = "234235,289645,178923";
$toFolderName = "zafarrancho";
($globalError, @error) = $handler->msgMove( $MIDList, $toFolderName,
$authMethod, @authParams )->result;
die "A global error ocurred trying to move $MIDList to folder $toFolderName" if $globalError;
my @MID = split ',', $MIDList;
for ( my $i=0; $i < @error; $i++) {
print "Can't move message $MID[$i] !!!!\n" if $error[$i];
};
msgTag($$@)Tags a message as read or not read
Returns no value at all (FIX ME !!)
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
$error = $handler->msgTag( $MID, $hasBeenRead,
$authMethod, @authParams )->result;
die "Can't mark message $MID as read !!!!\n" if $error;
search($$$@)Searches for messages in the $folderList that contains the text passed in $textToSearch
Returns an array with the MIDs (Message IDs) that satisfy the search criteria
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... authentication via authAuthenticate() ...
($error, @MID) = $handler->search( $textList, $folderList,
$authMethod, @authParams )->result;
die "Error while trying to search :-(\n" if $error;
close()Closes the relationship with the the e-mail storage.
Usage:
use SOAP::Lite;
### ... handler creation via new() ...
### ... storage handling and stuff ...
my $error = $handler->close( $authMethod, @authParams )->result;
|
Developer's arenaTRex::Storage::EMail |