HTTP-DAV
view release on metacpan or search on metacpan
lib/HTTP/DAV/Lock.pm view on Meta::CPAN
# 2. RFC2518 currently only allows locktype of "write"
elsif ( $lock_prop_name eq "locktype" ) {
my $node_lock_type = HTTP::DAV::Utils::get_only_element($node_lock_param);
my $lock_type = $node_lock_type->getNodeName;
$lock_type =~ s/.*:(.*)/$1/g;
$lock->set_type($lock_type);
}
# 3. RFC2518 allows only depth of 0,1,infinity
elsif ( $lock_prop_name eq "depth" ) {
my $lock_depth = HTTP::DAV::Utils::get_only_cdata($node_lock_param);
$lock->set_depth($lock_depth);
}
# 4. RFC2518 allows anything here.
# Patrick: I'm just going to convert the XML to a string
elsif ( $lock_prop_name eq "owner" ) {
$lock->set_owner( $node_lock_param->getFirstChild->toString );
}
# 5. RFC2518 (Section 9.8) e.g. Timeout: Second-234234 or Timeout: infinity
elsif ( $lock_prop_name eq "timeout" ) {
my $lock_timeout = HTTP::DAV::Utils::get_only_cdata($node_lock_param);
my $timeout = HTTP::DAV::Lock->interpret_timeout($lock_timeout);
$lock->set_timeout( $timeout );
#if ( $HTTP::DAV::DEBUG ) {
# $lock->{ "_timeout_val" } = HTTP::Date::time2str($timeout)
#}
}
# 6. RFC2518 allows one or more <href>'s
# Push them all into the lock object.
elsif ( $lock_prop_name eq "locktoken" ) {
my @nodelist_hrefs = HTTP::DAV::Utils::get_elements_by_tag_name($node_lock_param,"D:href");
foreach my $node ( @nodelist_hrefs) {
my $href_cdata = HTTP::DAV::Utils::get_only_cdata( $node );
$lock->set_locktoken( $href_cdata );
}
}
} # Foreach property
} # Foreach ActiveLock
return @found_locks;
}
###########################################################################
lib/HTTP/DAV/Resource.pm view on Meta::CPAN
# Ignore anything in the <prop> element which is
# not an Element. i.e. ignore comments, text, etc...
next if ($prop->getNodeTypeName() ne "ELEMENT_NODE");
my $prop_name = $prop->getNodeName();
$prop_name = HTTP::DAV::Utils::XML_remove_namespace($prop_name);
if (grep (/^$prop_name$/i, @raw_copy)) {
my $cdata = HTTP::DAV::Utils::get_only_cdata($prop);
$self->set_property($prop_name, $cdata);
}
elsif ($prop_name eq "lockdiscovery") {
my @locks = HTTP::DAV::Lock->XML_lockdiscovery_parse($prop);
$self->set_locks(@locks);
}
elsif ($prop_name eq "supportedlock") {
my $supportedlock_hashref
= HTTP::DAV::Lock::get_supportedlock_details($prop);
lib/HTTP/DAV/Utils.pm view on Meta::CPAN
print STDERR "\n";
print STDERR "DUMP:\n";
print STDERR $node->toString if $node;
exit;
}
###########################################################################
# This method searches for any text-based data in the children of
# the node supplied. It will croak if the node has anything other
# than text values (such as Elements or Comments).
sub get_only_cdata {
my($node) = @_;
my $return_cdata = "";
my $nodes = $node->getChildNodes();
my $n = $nodes->getLength;
for (my $i = 0; $i < $n; $i++) {
my $node = $nodes->item($i);
if ( $node->getNodeTypeName eq "TEXT_NODE" ) {
$return_cdata .= $node->getNodeValue;
} else {
#bad_node($node, "node has non TEXT children");
}
}
return $return_cdata;
}
# This is a sibling to the XML::DOM's getElementsByTagName().
# The main difference here is that it ignores the namespace
# component of the element. This was done because it
# Takes a node and returns a list of nodes.
# Note that the real getElementsByTagName allows you to
# specify recurse or not. This routine doesn't allow recurse.
sub get_elements_by_tag_name {
( run in 0.234 second using v1.01-cache-2.11-cpan-454fe037f31 )