Module: HTTPX::Plugins::WebDav::InstanceMethods
- Defined in:
- lib/httpx/plugins/webdav.rb,
sig/plugins/webdav.rbs
Instance Method Summary collapse
- #copy(src, dest) ⇒ Response, ErrorResponse
- #lock(path, timeout: nil, &blk) ⇒ void
- #mkcol(dir) ⇒ Response
- #move(src, dest) ⇒ Response, ErrorResponse
- #propfind(path, xml = nil) ⇒ Response
- #proppatch(path, xml) ⇒ Response
- #unlock(path, lock_token) ⇒ Response, ErrorResponse
Instance Method Details
#copy(src, dest) ⇒ Response, ErrorResponse
16 17 18 |
# File 'lib/httpx/plugins/webdav.rb', line 16 def copy(src, dest) request("COPY", src, headers: { "destination" => @options.origin.merge(dest) }) end |
#lock(path, timeout: nil, &blk) ⇒ void
This method returns an undefined value.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/httpx/plugins/webdav.rb', line 24 def lock(path, timeout: nil, &blk) headers = {} headers["timeout"] = if timeout && timeout.positive? "Second-#{timeout}" else "Infinite, Second-4100000000" end xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" \ "<D:lockinfo xmlns:D=\"DAV:\">" \ "<D:lockscope><D:exclusive/></D:lockscope>" \ "<D:locktype><D:write/></D:locktype>" \ "<D:owner>null</D:owner>" \ "</D:lockinfo>" response = request("LOCK", path, headers: headers, xml: xml) return response unless response.is_a?(Response) return response unless blk && response.status == 200 lock_token = response.headers["lock-token"] begin blk.call(response) ensure unlock(path, lock_token) end response end |
#mkcol(dir) ⇒ Response
58 59 60 |
# File 'lib/httpx/plugins/webdav.rb', line 58 def mkcol(dir) request("MKCOL", dir) end |
#move(src, dest) ⇒ Response, ErrorResponse
20 21 22 |
# File 'lib/httpx/plugins/webdav.rb', line 20 def move(src, dest) request("MOVE", src, headers: { "destination" => @options.origin.merge(dest) }) end |
#propfind(path, xml = nil) ⇒ Response
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/httpx/plugins/webdav.rb', line 62 def propfind(path, xml = nil) body = case xml when :acl '<?xml version="1.0" encoding="utf-8" ?><D:propfind xmlns:D="DAV:"><D:prop><D:owner/>' \ "<D:supported-privilege-set/><D:current-user-privilege-set/><D:acl/></D:prop></D:propfind>" when nil '<?xml version="1.0" encoding="utf-8"?><DAV:propfind xmlns:DAV="DAV:"><DAV:allprop/></DAV:propfind>' else xml end request("PROPFIND", path, headers: { "depth" => "1" }, xml: body) end |
#proppatch(path, xml) ⇒ Response
76 77 78 79 80 |
# File 'lib/httpx/plugins/webdav.rb', line 76 def proppatch(path, xml) body = "<?xml version=\"1.0\"?>" \ "<D:propertyupdate xmlns:D=\"DAV:\" xmlns:Z=\"http://ns.example.com/standards/z39.50/\">#{xml}</D:propertyupdate>" request("PROPPATCH", path, xml: body) end |
#unlock(path, lock_token) ⇒ Response, ErrorResponse
54 55 56 |
# File 'lib/httpx/plugins/webdav.rb', line 54 def unlock(path, lock_token) request("UNLOCK", path, headers: { "lock-token" => lock_token }) end |