Acme-PIA-Export
view release on metacpan or search on metacpan
"TEL_PRVT" => 39,
"FAX_PRVT" => 41,
"MOBIL_PRVT" => 43,
"MESSENGER" => 46,
"MAIL_PRVT" => 51,
"MAIL_BUSI" => 52,
"HOMEPAGE_PRVT" => 54,
"HOMEPAGE_BUSI" => 55,
"NICKNAME_PRVT" => 62,
"LAST_MODIFIED" => 71
},
"calendar" => {
}
);
our %ordered_fields = (
"contacts" => [
"CLIENT" ,
"ID" ,
"CURRDATE" ,
"VORNAME" ,
"NAME" ,
"FIRMA" ,
"STRASSE_BUSI" ,
"ORT_BUSI" ,
"NULL" ,
"PLZ_BUSI" ,
"LAND_BUSI" ,
"STRASSE_PRVT" ,
"ORT_PRVT" ,
"PLZ_PRVT" ,
"LAND_PRVT" ,
"TEL_BUSI" ,
"MOBIL_BUSI" ,
"FAX_BUSI" ,
"TEL_PRVT" ,
"FAX_PRVT" ,
"MOBIL_PRVT" ,
"MESSENGER" ,
"MAIL_PRVT" ,
"MAIL_BUSI" ,
"HOMEPAGE_PRVT" ,
"HOMEPAGE_BUSI" ,
"NICKNAME_PRVT" ,
"LAST_MODIFIED"
],
"calendar" => [
]
);
our %scopes = (
"contacts" => "contacts",
"calendar" => "calendar"
);
sub new {
my $self = {};
my $class = shift;
bless $self, ref $class || $class;
if( @_ ) {
my %cfg = @_;
foreach( keys %cfg ) {
$self->{"cfg"}->{$_} = $cfg{$_};
}
}
$self;
}
sub do_connect {
my $self = shift;
my $sock = new IO::Socket::INET(
PeerAddr => $server,
PeerPort => 80,
Proto => 'TCP'
);
die "Unable to connect to $server:80 (Error: $!)" unless( $sock );
$sock->autoflush(1);
$self->{"sock"} = $sock;
$self;
}
sub export {
my $self = shift;
my $what = shift || "contacts";
unless( $scopes{$what} ) {
die "No such scope to export: $what";
}
$self->do_connect();
$self->send_request($what);
$self->get_response($what);
my $sock = $self->{"sock"};
$sock->close();
}
sub send_request {
my $self = shift;
my $what = shift;
if( ! $self->{"cfg"}->{"username"} ) {
die "No Username given!";
}
if( ! $self->{"cfg"}->{"password"} ) {
die "No Password given!";
}
if( ! $self->{"cfg"}->{"client"} ) {
$self->{"cfg"}->{"client"} = uc($ENV{"hostname"}) || sprintf("%s-%0.5i", "Acme-PIA-Export", rand(99999));
}
my $requestbody = "$self->{cfg}->{username}~;~$self->{cfg}->{password}~;~$self->{cfg}->{client}~;~$scopes{$what};~export~;~O~;~~#~";
my $content_length = length($requestbody);
my $request = "POST $query_url HTTP/1.1\n" .
"Pragma: no-cache\n" .
"Host: www.arcor.de\n" .
"Accept-Ranges: bytes\n" .
"Content-Type: text/html\n" .
"Content-Length: $content_length\n" .
"\n" .
$requestbody;
( run in 1.889 second using v1.01-cache-2.11-cpan-39bf76dae61 )