Module: HTTPX::Plugins::WebDav::InstanceMethods
- Defined in:
- lib/httpx/plugins/webdav.rb
Instance Method Summary collapse
- #copy(src, dest) ⇒ Object
- #lock(path, timeout: nil, &blk) ⇒ Object
- #mkcol(dir) ⇒ Object
- #move(src, dest) ⇒ Object
- #propfind(path, xml = nil) ⇒ Object
- #proppatch(path, xml) ⇒ Object
- #unlock(path, lock_token) ⇒ Object
Instance Method Details
#copy(src, dest) ⇒ Object
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) ⇒ Object
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) ⇒ Object
58 59 60 |
# File 'lib/httpx/plugins/webdav.rb', line 58 def mkcol(dir) request("MKCOL", dir) end |
#move(src, dest) ⇒ Object
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) ⇒ Object
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) ⇒ Object
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) ⇒ Object
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 |