EWS::Client implementation overload to register the role EWS::Client::Role::GetAttachment providing the EWS SOAP "GetAttachment" implementation. Change-Id: Iff3de2fd5626da94e227eabcfe2c9bdfd1d43501mr11.3.1
parent
c21edf1e1a
commit
a5db9a00ca
@ -0,0 +1,122 @@
|
||||
package EWS::Client;
|
||||
use strict;
|
||||
use warnings;
|
||||
BEGIN {
|
||||
$EWS::Client::VERSION = '1.300000';
|
||||
}
|
||||
use Moose;
|
||||
|
||||
with qw/
|
||||
EWS::Client::Role::SOAP
|
||||
EWS::Client::Role::GetItem
|
||||
EWS::Client::Role::GetAttachment
|
||||
EWS::Client::Role::FindItem
|
||||
EWS::Client::Role::FindFolder
|
||||
EWS::Client::Role::GetFolder
|
||||
EWS::Client::Role::ExpandDL
|
||||
EWS::Client::Role::GetUserAvailability
|
||||
EWS::Client::Role::ResolveNames
|
||||
/;
|
||||
use EWS::Client::Contacts;
|
||||
use EWS::Client::Calendar;
|
||||
use EWS::Client::Folder;
|
||||
use EWS::Client::DistributionList;
|
||||
use URI::Escape ();
|
||||
use Log::Report;
|
||||
|
||||
has username => (
|
||||
is => 'rw',
|
||||
isa => 'Str',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
has password => (
|
||||
is => 'rw',
|
||||
isa => 'Str',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
has server => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
has contacts => (
|
||||
is => 'ro',
|
||||
isa => 'EWS::Client::Contacts',
|
||||
lazy_build => 1,
|
||||
);
|
||||
|
||||
sub _build_contacts {
|
||||
my $self = shift;
|
||||
return EWS::Client::Contacts->new({ client => $self });
|
||||
}
|
||||
|
||||
has calendar => (
|
||||
is => 'ro',
|
||||
isa => 'EWS::Client::Calendar',
|
||||
lazy_build => 1,
|
||||
);
|
||||
|
||||
sub _build_calendar {
|
||||
my $self = shift;
|
||||
return EWS::Client::Calendar->new({ client => $self });
|
||||
}
|
||||
|
||||
has folders => (
|
||||
is => 'ro',
|
||||
isa => 'EWS::Client::Folder',
|
||||
lazy_build => 1,
|
||||
);
|
||||
|
||||
sub _build_folders {
|
||||
my $self = shift;
|
||||
return EWS::Client::Folder->new({ client => $self });
|
||||
}
|
||||
|
||||
has distribution_list => (
|
||||
is => 'ro',
|
||||
isa => 'EWS::Client::DistributionList',
|
||||
lazy_build => 1,
|
||||
);
|
||||
|
||||
sub _build_distribution_list {
|
||||
my $self = shift;
|
||||
return EWS::Client::DistributionList->new({ client => $self });
|
||||
}
|
||||
|
||||
sub BUILDARGS {
|
||||
my ($class, @rest) = @_;
|
||||
my $params = (scalar @rest == 1 ? $rest[0] : {@rest});
|
||||
|
||||
# collect EWS password from environment as last resort
|
||||
$params->{password} ||= $ENV{EWS_PASS};
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
sub BUILD {
|
||||
my ($self, $params) = @_;
|
||||
|
||||
if ($self->use_negotiated_auth) {
|
||||
die "please install LWP::Authen::Ntlm"
|
||||
unless eval { require LWP::Authen::Ntlm && $LWP::Authen::Ntlm::VERSION };
|
||||
die "please install Authen::NTLM"
|
||||
unless eval { require Authen::NTLM && $Authen::NTLM::VERSION };
|
||||
|
||||
# change email style username to win-domain style
|
||||
if ($self->username =~ m/(.+)@(.+)/) {
|
||||
$self->username( $2 .'\\'. $1 );
|
||||
}
|
||||
}
|
||||
else {
|
||||
# URI escape the username and password
|
||||
$self->password( URI::Escape::uri_escape($self->password) );
|
||||
$self->username( URI::Escape::uri_escape($self->username) );
|
||||
}
|
||||
}
|
||||
|
||||
__PACKAGE__->meta->make_immutable;
|
||||
no Moose;
|
||||
1;
|
||||
Loading…
Reference in new issue