Net-DAVTalk
view release on metacpan or search on metacpan
lib/Net/DAVTalk.pm view on Meta::CPAN
=head2 $Self->genuuid()
Helper to generate a uuid string. Returns a UUID, e.g.
my $uuid = $DAVTalk->genuuid(); # 9b9d68af-ad13-46b8-b7ab-30ab70da14ac
=cut
sub genuuid {
my $Self = shift;
return "$uuid";
}
=head2 $Self->auth_header()
Generate the authentication header to use on requests:
e.g:
$Headers{'Authorization'} = $Self->auth_header();
=cut
sub auth_header {
my $Self = shift;
if ($Self->{password}) {
return 'Basic ' . encode_base64("$Self->{user}:$Self->{password}", '');
}
if ($Self->{access_token}) {
return "Bearer $Self->{access_token}";
}
croak "Need a method to authenticate user (password or access_token)";
}
=head2 $Self->request_url()
Generate the authentication header to use on requests:
e.g:
$Headers{'Authorization'} = $Self->auth_header();
=cut
sub request_url {
my $Self = shift;
my $Path = shift;
my $URL = $Self->{url};
# If a reference, assume absolute
if (ref $Path) {
($URL, $Path) = $$Path =~ m{(^https?://[^/]+)(.*)$};
}
if ($Path) {
$Path = join "/", map { uri_escape $_ } split m{/}, $Path, -1;
if ($Path =~ m{^/}) {
$URL =~ s{(^https?://[^/]+)(.*)}{$1$Path};
}
else {
$URL =~ s{/$}{};
$URL .= "/$Path";
}
}
return $URL;
}
=head2 $Self->NS()
Returns a hashref of the 'xmlns:shortname' => 'full namespace' items for use in XML::Spice body generation, e.g.
$DAVTalk->Request(
'MKCALENDAR',
"$calendarId/",
x('C:mkcalendar', $Self->NS(),
x('D:set',
x('D:prop', @Properties),
),
),
);
# { 'xmlns:C' => 'urn:ietf:params:xml:ns:caldav', 'xmlns:D' => 'DAV:' }
=cut
sub NS {
my $Self = shift;
return {
map { ( "xmlns:$_" => $Self->ns($_) ) }
$Self->ns(),
};
}
=head2 $Self->ns($key, $value)
Get or set namespace aliases, e.g
$Self->ns(C => 'urn:ietf:params:xml:ns:caldav');
my $NS_C = $Self->ns('C'); # urn:ietf:params:xml:ns:caldav
=cut
sub ns {
my $Self = shift;
# case: keys
return keys %{$Self->{ns}} unless @_;
my $key = shift;
# case read one
return $Self->{ns}{$key} unless @_;
# case write
( run in 0.586 second using v1.01-cache-2.11-cpan-71847e10f99 )