HTTP::DAV::Resource(3pm) | User Contributed Perl Documentation | HTTP::DAV::Resource(3pm) |
HTTP::DAV::Resource - Represents and interfaces with WebDAV Resources
Sample
Description here
$r = HTTP::DAV::Resource->new(
-uri => $uri,
-LockedResourceList => $locks,
-Comms => $comms
-Client => $dav_client
);
On creation a Resource object needs 2 other objects passed in:
1. a "ResourceList" Object. This list will be added to if you lock this Resource.
2. a "Comms" Object. This object will be used for HTTP communication.
2. a "HTTP::DAV" Object. This object is where all locks are stored
$response = $resource->get; print $resource->get_content if ($response->is_success);
$response = $resource->put( $string );
$string is be passed as the body.
e.g. $response = $resource->put($string); print $resource->get_content if ($response->is_success);
Will use a Lock header if this resource was previously locked.
$response = $resource->delete; print "Delete successful" if ($response->is_success);
Will use a Lock header if this resource was previously locked.
$response = $resource->options; print "Yay for PUT!" if $resource->is_option("PUT");
$response = $resource->mkcol; print "MKCOL successful" if ($response->is_success);
Will use a Lock header if this resource was previously locked.
$response = $resource->propfind; if ($response->is_success) { print "PROPFIND successful\n"; print $resource->get_property("displayname") . "\n"; }
A successful PROPFIND fills the object with much data about
the Resource. Including:
displayname
...
TODO
$resource->lock( -owner => "Patrick Collins", -depth => "infinity" -scope => "exclusive", -type => "write" -timeout => TIMEOUT', )
lock takes the following arguments.
owner - Indicates who locked this resource
The default value is:
DAV.pm/v$DAV::VERSION ($$)
e.g. DAV.pm/v0.1 (123)
If you use a URL as the owner, the module will automatically indicate to the server that is is a URL (<D:href>http://...</D:href>)
depth - Indicates the depth of the lock.
Legal values are 0 or infinity. (1 is not allowed).
The default value is infinity.
A lock value of 0 on a collection will lock just the collection but not it's members, whereas a lock value of infinity will lock the collection and all of it's members.
scope - Indicates the scope of the lock.
Legal DAV values are "exclusive" or "shared".
The default value is exclusive.
See section 6.1 of RFC2518 for a description of shared vs. exclusive locks.
type - Indicates the type of lock (read, write, etc)
The only legal DAV value currently is "write".
The default value is write.
timeout - Indicates when the lock will timeout
The timeout value may be one of, an Absolute Date, a Time Offset from now, or the word "infinity".
The default value is "infinity".
The following are all valid timeout values:
Time Offset:
30s 30 seconds from now
10m ten minutes from now
1h one hour from now
1d tomorrow
3M in three months
10y in ten years time
Absolute Date:
timeout at the indicated time & date (UTC/GMT) 2000-02-31 00:40:33 timeout at the indicated date (UTC/GMT) 2000-02-31
You can use any of the Absolute Date formats specified in HTTP::Date (see perldoc HTTP::Date)
Note: the DAV server may choose to ignore your specified timeout.
$response = $resource->unlock() $response = $resource->unlock( -force => 1 ) $response = $resource->unlock( -token => "opaquelocktoken:1342-21423-2323" )
This method will automatically use the correct locktoken If: header if this resource was previously locked.
force - Synonymous to calling $resource->forcefully_unlock_all.
$response = $resource->forcefully_unlock_all;
This method will perform a lockdiscovery against the resource to determine all of the current locks. Then it will UNLOCK them one by one. unlock( -token => locktoken ).
This unlock process is achievable because DAV does not enforce any security over locks.
Note: this method returns the LAST unlock response (this is sufficient to indicate the success of the sequence of unlocks). If an unlock fails, it will bail and return that response. For instance, In the event that there are 3 shared locks and the second unlock method fails, then you will get returned the unsuccessful second response. The 3rd unlock will not be attempted.
Don't run with this knife, you could hurt someone (or yourself).
$response = $resource->steal_lock;
Synonymous to forcefully_unlock_all() and then lock().
$response = $resource->lockdiscovery; @locks = $resource->get_locks if $response->is_success;
This method is in fact a simplified version of propfind().
print $resource->as_string
if ($resource->is_option( "PUT" ) ) { $resource->put( ... ) }
Note: this routine automatically calls the options() routine which makes the request to the server. Subsequent calls to is_option will use the cached option list. To force a rerequest to the server call options()
@lock = $resource->is_locked( -owned=>[1|0] );
owned - this parameter is used to ask, is this resource locked by me?
Note: You must have already called propfind() or lockdiscovery()
e.g. Is the resource locked at all?
print "yes" if
$resource->is_locked();
Is the resource locked by me?
print "yes" if $resource->is_locked(
-owned=>1 );
Is the resource locked by someone other than me?
print "yes" if $resource->is_locked(
-owned=>0 );
print "Directory" if ( $resource->is_collection );
You must first have performed a propfind.
print "URL is: " . $resource->get_uri()->as_string . "\n";
See the URI manpage from the LWP libraries (perldoc URI)
print $resource->get_property( "displayname" );
You must first have performed a propfind.
@options = $resource->get_options
$content = $resource->get_content
${$resource->get_content_ref} =~ s/\bfoo\b/bar/g;
Note: You must have already called get()
$lock = $resource->get_lock( "opaquelocktoken:234214--342-3444" );
@lock = $resource->get_locks( -owned=>[1|0] );
owned - this parameter indicates which locks you want.
- '1', requests any of my locks. (Locked by this DAV instance).
- '0' ,requests any locks not owned by us.
- any other value or no value, requests ALL locks.
Note: You must have already called propfind() or lockdiscovery()
e.g.
Give me my locks
@lock =
$resource->get_locks( -owned=>1 );
Give me all locks @lock = $resource->get_locks();
Sets the parent resource list (ask the question, which collection am I a member of?). See HTTP::DAV::ResourceList.
2022-05-28 | perl v5.34.0 |