fernyb_davclient 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +53 -0
- data/Manifest +38 -0
- data/README.rdoc +134 -0
- data/Rakefile +95 -0
- data/bin/dav +6 -0
- data/examples/clean_files.rb +131 -0
- data/examples/meta_tags_in_use.rb +64 -0
- data/examples/remove_ds_store.rb +15 -0
- data/examples/scrape_site.rb +36 -0
- data/examples/simple_find.rb +10 -0
- data/fernyb_davclient.gemspec +35 -0
- data/lib/davclient.rb +513 -0
- data/lib/davclient/curl_commands.rb +70 -0
- data/lib/davclient/dav-ls.rb +168 -0
- data/lib/davclient/dav-propfind.rb +92 -0
- data/lib/davclient/dav-put.rb +137 -0
- data/lib/davclient/davcli.rb +286 -0
- data/lib/davclient/hpricot_extensions.rb +149 -0
- data/lib/davclient/simple.rb +44 -0
- data/lib/davclient/termutil.rb +55 -0
- data/lib/davclient/util.rb +256 -0
- data/tests/dav.rb +12 -0
- data/tests/tc_dav-cat.rb +34 -0
- data/tests/tc_dav-cd.rb +45 -0
- data/tests/tc_dav-cp.rb +51 -0
- data/tests/tc_dav-delete.rb +37 -0
- data/tests/tc_dav-get.rb +63 -0
- data/tests/tc_dav-ls.rb +45 -0
- data/tests/tc_dav-mkcol.rb +64 -0
- data/tests/tc_dav-mv.rb +65 -0
- data/tests/tc_dav-propfind.rb +40 -0
- data/tests/tc_dav-put.rb +132 -0
- data/tests/tc_util.rb +39 -0
- data/tests/tc_webdav_basic.rb +86 -0
- data/tests/tc_webdav_publish.rb +63 -0
- data/tests/test_helper.rb +2 -0
- data/tests/ts_davclient.rb +12 -0
- data/todo +32 -0
- metadata +118 -0
data/tests/tc_util.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'test_helper'
|
3
|
+
require 'rubygems'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'davclient/util'
|
6
|
+
require 'davclient/curl_commands'
|
7
|
+
|
8
|
+
$cmd = <<EOF
|
9
|
+
curl --user thomasfl --request PROPFIND --header 'Content-Type: text/xml; charset="utf-8"' --header "Depth: 1" --data-ascii '<?xml version="1.0" encoding="utf-8"?><DAV:propfind xmlns:DAV="DAV:"><DAV:allprop/></DAV:propfind>' "https://vortex-dav.uio.no/brukere/thomasfl/testseminar/"
|
10
|
+
EOF
|
11
|
+
|
12
|
+
class TestUtil < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_extract_host
|
15
|
+
assert_equal "host.host.com", DavClient.exctract_host("https://host.host.com/lots-of-rubbish")
|
16
|
+
assert_equal "host.host.com", DavClient.exctract_host("http://host.host.com?lots-of-rubbish")
|
17
|
+
assert_equal nil, DavClient.exctract_host("//not-an-url")
|
18
|
+
end
|
19
|
+
|
20
|
+
# Interactiv tests
|
21
|
+
def zzz_test_01_password_prompt
|
22
|
+
$username = nil
|
23
|
+
$password = nil
|
24
|
+
DavClient.prompt_for_username_and_password("host.host.com")
|
25
|
+
assert $username
|
26
|
+
assert $password
|
27
|
+
end
|
28
|
+
|
29
|
+
def zzz_test_02_spawn_curl
|
30
|
+
result = DavClient.spawn_curl($cmd, $password)
|
31
|
+
assert result =~ /d:multistatus/
|
32
|
+
result = DavClient.spawn_curl($cmd, "feil")
|
33
|
+
assert result =~ /401 Unauthorized/
|
34
|
+
cmd = $cmd.sub("--user thomasfl","--netrc")
|
35
|
+
result = DavClient.spawn_curl(cmd, nil)
|
36
|
+
assert result =~ /d:multistatus/
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'test/unit'
|
4
|
+
require 'test_helper'
|
5
|
+
require 'davclient'
|
6
|
+
|
7
|
+
$curl = "/usr/local/bin/curl"
|
8
|
+
|
9
|
+
class TestWebDAVLib < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def test_01_hpricot_extensions
|
12
|
+
url = "https://vortex-dav.uio.no/brukere/thomasfl/"
|
13
|
+
test_content = "<html><head><title>title</title></head><body>one two three</body></html>"
|
14
|
+
WebDAV.delete(url + "testcase")
|
15
|
+
WebDAV.mkcol(url + "testcase")
|
16
|
+
WebDAV.publish(url + "testcase/test_page.html", test_content,nil)
|
17
|
+
|
18
|
+
webpage = nil
|
19
|
+
WebDAV.find(url + "testcase/") do |item|
|
20
|
+
webpage = item
|
21
|
+
end
|
22
|
+
|
23
|
+
# puts webpage.href
|
24
|
+
# puts "content: " + webpage.content
|
25
|
+
|
26
|
+
webpage.content = webpage.content.gsub(/two/,"2")
|
27
|
+
|
28
|
+
webpage = nil
|
29
|
+
WebDAV.find(url + "testcase/") do |item|
|
30
|
+
webpage = item
|
31
|
+
end
|
32
|
+
assert webpage.content =~ /one 2 three/
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_find
|
37
|
+
url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
|
38
|
+
items = WebDAV.find(url)
|
39
|
+
assert(items.size > 10 )
|
40
|
+
|
41
|
+
antall = items.size
|
42
|
+
WebDAV.cd(url)
|
43
|
+
items = WebDAV.find()
|
44
|
+
assert_equal(antall, items.size )
|
45
|
+
|
46
|
+
assert_raise RuntimeError do
|
47
|
+
WebDAV.CWURL = nil
|
48
|
+
items = WebDAV.find()
|
49
|
+
end
|
50
|
+
|
51
|
+
items = WebDAV.find(url, :type => "collection")
|
52
|
+
assert( items.size > 9 )
|
53
|
+
|
54
|
+
counter = 0
|
55
|
+
WebDAV.find(url, :type => "collection") do |item|
|
56
|
+
counter += 1
|
57
|
+
end
|
58
|
+
assert(counter > 9 )
|
59
|
+
|
60
|
+
counter = 0
|
61
|
+
WebDAV.find(url + "2008/", :type => "collection", :recursive => true) do |item|
|
62
|
+
counter += 1
|
63
|
+
end
|
64
|
+
assert(counter > 9 )
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_propfind
|
68
|
+
url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
|
69
|
+
item = WebDAV.propfind(url, :xml => true)
|
70
|
+
assert(item.class == String)
|
71
|
+
# puts "DEBUG:: " + item
|
72
|
+
|
73
|
+
item = WebDAV.propfind(url)
|
74
|
+
assert(item.class != String)
|
75
|
+
assert_equal(url, item.href)
|
76
|
+
assert_equal("Nyheter", item.title)
|
77
|
+
|
78
|
+
assert_nil(item.denne_finnes_virkelig_ikke)
|
79
|
+
|
80
|
+
# Properties should be readable with minor misspellings like wrong casing
|
81
|
+
assert(item.property("v:resourceType") ) # CamelCased
|
82
|
+
assert(item.property("v:resourcetype") ) # Downcase
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'test/unit'
|
3
|
+
require 'test_helper'
|
4
|
+
require 'davclient'
|
5
|
+
|
6
|
+
HTML = <<EOF
|
7
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
8
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
9
|
+
<head>
|
10
|
+
<title>Test title</title>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<p>Test content</p>
|
14
|
+
</body>
|
15
|
+
</html>
|
16
|
+
EOF
|
17
|
+
|
18
|
+
props = <<EOF
|
19
|
+
<v:authors xmlns:v="vrtx">
|
20
|
+
<vrtx:values xmlns:vrtx="http://vortikal.org/xml-value-list">
|
21
|
+
<vrtx:value>Firstname Lastname</vrtx:value>
|
22
|
+
</vrtx:values>
|
23
|
+
</v:authors>
|
24
|
+
<v:resourceType xmlns:v="vrtx">article</v:resourceType>
|
25
|
+
<v:xhtml10-type xmlns:v="vrtx">article</v:xhtml10-type>
|
26
|
+
<v:published-date xmlns:v="vrtx">Wed, 22 Jul 2009 12:34:56 GMT</v:published-date>
|
27
|
+
<v:userspecifiedcharacterencoding xmlns:v="vrtx">utf-8</v:userspecifiedcharacterencoding>
|
28
|
+
<v:characterEncoding xmlns:v="vrtx">utf-8</v:characterEncoding>
|
29
|
+
EOF
|
30
|
+
PROPERTIES = props.gsub("\n","").gsub(/ +/," ")
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
class TestWebDAVLibPublish < Test::Unit::TestCase
|
35
|
+
|
36
|
+
|
37
|
+
def test_publish
|
38
|
+
url = "https://vortex-dav.uio.no/prosjekter/it-avisa/nyheter/"
|
39
|
+
nyhet_url = url + "testnyhet_skal_slettes.html"
|
40
|
+
|
41
|
+
WebDAV.delete(nyhet_url)
|
42
|
+
nyhet = WebDAV.find(nyhet_url)
|
43
|
+
assert_nil(nyhet)
|
44
|
+
|
45
|
+
error = false
|
46
|
+
begin
|
47
|
+
WebDAV.publish(nyhet_url + "/", HTML, PROPERTIES )
|
48
|
+
rescue
|
49
|
+
error = true
|
50
|
+
end
|
51
|
+
assert(error)
|
52
|
+
|
53
|
+
WebDAV.publish(nyhet_url, HTML, PROPERTIES)
|
54
|
+
|
55
|
+
nyhet = WebDAV.propfind(nyhet_url)
|
56
|
+
assert(nyhet)
|
57
|
+
assert_equal("Test title", nyhet.title)
|
58
|
+
assert_equal("article", nyhet.resourcetype)
|
59
|
+
assert_equal("utf-8", nyhet.characterencoding)
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'tc_webdav_basic.rb'
|
3
|
+
require 'tc_webdav_publish.rb'
|
4
|
+
require 'tc_dav-cat.rb'
|
5
|
+
# require 'tc_dav-cd.rb'
|
6
|
+
require 'tc_dav-cp.rb'
|
7
|
+
require 'tc_dav-delete.rb'
|
8
|
+
# require 'tc_dav-ls.rb'
|
9
|
+
require 'tc_dav-mkcol.rb'
|
10
|
+
require 'tc_dav-mv.rb'
|
11
|
+
require 'tc_dav-propfind.rb'
|
12
|
+
require 'tc_property_file.rb'
|
data/todo
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
TODO
|
2
|
+
|
3
|
+
DavClient - Add new functionality
|
4
|
+
=================================
|
5
|
+
|
6
|
+
- Read options from config file, like default homepage url.
|
7
|
+
Make 'dav ls' go to some sort of homepage. Use .davclient
|
8
|
+
|
9
|
+
|
10
|
+
- PUT
|
11
|
+
- put *.html
|
12
|
+
- put -s "<html>..</html>" filename.html
|
13
|
+
|
14
|
+
- GET
|
15
|
+
- get remote_file.html
|
16
|
+
- get remote_collection
|
17
|
+
|
18
|
+
- More authentication options than using the ~/.netrc file.
|
19
|
+
|
20
|
+
- Implement these WebDAV functions
|
21
|
+
|
22
|
+
- COPY
|
23
|
+
- MOVE
|
24
|
+
- LOCK
|
25
|
+
- UNLOCK
|
26
|
+
|
27
|
+
- Other commands implemented in cadaver: http://linux.die.net/man/1/cadaver
|
28
|
+
|
29
|
+
- propnames
|
30
|
+
- propset prop value
|
31
|
+
|
32
|
+
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fernyb_davclient
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.9
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Thomas Flemming
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-15 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: echoe
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: Command line WebDAV client and Ruby library.
|
26
|
+
email: thomasfl@usit.uio.no
|
27
|
+
executables:
|
28
|
+
- dav
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- bin/dav
|
33
|
+
- lib/davclient/curl_commands.rb
|
34
|
+
- lib/davclient/dav-ls.rb
|
35
|
+
- lib/davclient/dav-propfind.rb
|
36
|
+
- lib/davclient/dav-put.rb
|
37
|
+
- lib/davclient/davcli.rb
|
38
|
+
- lib/davclient/hpricot_extensions.rb
|
39
|
+
- lib/davclient/simple.rb
|
40
|
+
- lib/davclient/termutil.rb
|
41
|
+
- lib/davclient/util.rb
|
42
|
+
- lib/davclient.rb
|
43
|
+
- LICENSE
|
44
|
+
- README.rdoc
|
45
|
+
files:
|
46
|
+
- bin/dav
|
47
|
+
- examples/clean_files.rb
|
48
|
+
- examples/meta_tags_in_use.rb
|
49
|
+
- examples/remove_ds_store.rb
|
50
|
+
- examples/scrape_site.rb
|
51
|
+
- examples/simple_find.rb
|
52
|
+
- fernyb_davclient.gemspec
|
53
|
+
- lib/davclient/curl_commands.rb
|
54
|
+
- lib/davclient/dav-ls.rb
|
55
|
+
- lib/davclient/dav-propfind.rb
|
56
|
+
- lib/davclient/dav-put.rb
|
57
|
+
- lib/davclient/davcli.rb
|
58
|
+
- lib/davclient/hpricot_extensions.rb
|
59
|
+
- lib/davclient/simple.rb
|
60
|
+
- lib/davclient/termutil.rb
|
61
|
+
- lib/davclient/util.rb
|
62
|
+
- lib/davclient.rb
|
63
|
+
- LICENSE
|
64
|
+
- Manifest
|
65
|
+
- Rakefile
|
66
|
+
- README.rdoc
|
67
|
+
- tests/dav.rb
|
68
|
+
- tests/tc_dav-cat.rb
|
69
|
+
- tests/tc_dav-cd.rb
|
70
|
+
- tests/tc_dav-cp.rb
|
71
|
+
- tests/tc_dav-delete.rb
|
72
|
+
- tests/tc_dav-get.rb
|
73
|
+
- tests/tc_dav-ls.rb
|
74
|
+
- tests/tc_dav-mkcol.rb
|
75
|
+
- tests/tc_dav-mv.rb
|
76
|
+
- tests/tc_dav-propfind.rb
|
77
|
+
- tests/tc_dav-put.rb
|
78
|
+
- tests/tc_util.rb
|
79
|
+
- tests/tc_webdav_basic.rb
|
80
|
+
- tests/tc_webdav_publish.rb
|
81
|
+
- tests/test_helper.rb
|
82
|
+
- tests/ts_davclient.rb
|
83
|
+
- todo
|
84
|
+
has_rdoc: true
|
85
|
+
homepage: http://davclient.rubyforge.org/davclient
|
86
|
+
licenses: []
|
87
|
+
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options:
|
90
|
+
- --line-numbers
|
91
|
+
- --inline-source
|
92
|
+
- --title
|
93
|
+
- Fernyb_davclient
|
94
|
+
- --main
|
95
|
+
- README.rdoc
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: "0"
|
103
|
+
version:
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: "1.2"
|
109
|
+
version:
|
110
|
+
requirements: []
|
111
|
+
|
112
|
+
rubyforge_project: fernyb_davclient
|
113
|
+
rubygems_version: 1.3.5
|
114
|
+
signing_key:
|
115
|
+
specification_version: 3
|
116
|
+
summary: Command line WebDAV client and Ruby library.
|
117
|
+
test_files: []
|
118
|
+
|