vortex_client 0.2.0 → 0.3.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/lib/vortex_client.rb CHANGED
@@ -41,10 +41,9 @@ module Vortex
41
41
  #
42
42
  # vortex.exists?("https://www-dav.server.com/folder/index.html")
43
43
  def exists?(uri)
44
- @uri = uri
45
- @uri = URI.parse(@uri) if @uri.is_a? String
44
+ uri = URI.parse(uri) if uri.is_a? String
46
45
  begin
47
- self.propfind(@uri.path)
46
+ self.propfind(uri.path)
48
47
  rescue Net::HTTPServerException => e
49
48
  return false if(e.to_s =~ /404/)
50
49
  end
@@ -74,6 +73,22 @@ module Vortex
74
73
  end
75
74
  end
76
75
 
76
+ # Creates collections
77
+ #
78
+ # Example:
79
+ #
80
+ # connection = Connection.new('https://host.com')
81
+ # collecion = ArticleListingCollection.new(:url => '/url')
82
+ # connection.create(collection)
83
+ def create(object)
84
+ if(object.is_a? ArticleListingCollection)
85
+ uri = @uri.merge(object.url)
86
+ self.mkdir(uri)
87
+ self.proppatch(uri, object.properties)
88
+ return uri.to_s
89
+ end
90
+ end
91
+
77
92
  private
78
93
 
79
94
  # Disable Net::DAV.credentials
@@ -102,7 +117,7 @@ module Vortex
102
117
  # vortex.publish(article)
103
118
  class HtmlArticle < PlainFile
104
119
 
105
- attr_accessor :title, :introduction, :body, :filename, :modifiedDate, :publishedDate, :owner, :url, :author, :date
120
+ attr_accessor :title, :introduction, :body, :filename, :modifiedDate, :publishedDate, :owner, :url, :author, :date, :tags
106
121
 
107
122
  # Create a new article of type html-article: plain html file with introduction stored as a webdav property.
108
123
  def initialize(options={})
@@ -161,6 +176,16 @@ module Vortex
161
176
  '</vrtx:values>' +
162
177
  '</v:authors>'
163
178
  end
179
+
180
+ if(tags and tags.kind_of?(Array))
181
+ props += '<v:tags xmlns:v="vrtx">' +
182
+ '<vrtx:values xmlns:vrtx="http://vortikal.org/xml-value-list">'
183
+ tags.each do |tag|
184
+ props += "<vrtx:value>#{tag}</vrtx:value>"
185
+ end
186
+ props += '</vrtx:values></v:tags>'
187
+ end
188
+
164
189
  return props
165
190
  end
166
191
 
@@ -216,11 +241,18 @@ module Vortex
216
241
  end
217
242
 
218
243
  def properties()
219
- "<v:resourceType xmlns:v=\"vrtx\">article-listing</v:resourceType>" +
220
- "<v:collection-type xmlns:v=\"vrtx\">article-listing</v:collection-type>" +
221
- "<v:userTitle xmlns:v=\"vrtx\">#{userTitle}</v:userTitle>" +
222
- "<v:navigationTitle xmlns:v=\"vrtx\">#{navigationTitle}</v:navigationTitle>" +
223
- "<owner xmlns=\"vrtx\">#{owner}</owner>"
244
+ props = "<v:resourceType xmlns:v=\"vrtx\">article-listing</v:resourceType>" +
245
+ "<v:collection-type xmlns:v=\"vrtx\">article-listing</v:collection-type>"
246
+ if(title and title != "")
247
+ props += "<v:userTitle xmlns:v=\"vrtx\">#{title}</v:userTitle>"
248
+ end
249
+ if(navigationTitle and navigationTitle != "")
250
+ props += "<v:navigationTitle xmlns:v=\"vrtx\">#{navigationTitle}</v:navigationTitle>"
251
+ end
252
+ if(owner and owner != "")
253
+ props += "<owner xmlns=\"vrtx\">#{owner}</owner>"
254
+ end
255
+ return props
224
256
  end
225
257
 
226
258
  end
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestVortexCollection < Test::Unit::TestCase
5
+ include Vortex
6
+
7
+ def setup
8
+ if(not(@vortex))
9
+ user = ENV['DAVUSER']
10
+ pass = ENV['DAVPASS']
11
+ @vortex = Vortex::Connection.new("https://vortex-dav.uio.no/",user, pass)
12
+ end
13
+ end
14
+
15
+ should "create collection (folder)" do
16
+ url = 'https://vortex-dav.uio.no/brukere/thomasfl/nyheter/my-collection'
17
+ if(@vortex.exists?(url))
18
+ @vortex.delete(url)
19
+ end
20
+
21
+ @vortex.cd('/brukere/thomasfl/nyheter/')
22
+ collection = ArticleListingCollection.new(:url => 'my-collection', :title => 'My Collection')
23
+ created_path = @vortex.create(collection)
24
+
25
+ assert @vortex.exists?(created_path)
26
+ assert created_path == url
27
+ end
28
+
29
+ end
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestVortexTags < Test::Unit::TestCase
5
+ include Vortex
6
+
7
+ def setup
8
+ if(not(@vortex))
9
+ user = ENV['DAVUSER']
10
+ pass = ENV['DAVPASS']
11
+ @vortex = Vortex::Connection.new("https://vortex-dav.uio.no/",user, pass)
12
+ end
13
+ end
14
+
15
+ should "publish articles with tags" do
16
+ url = 'https://vortex-dav.uio.no/brukere/thomasfl/nyheter/my-sample-title.html'
17
+ if(@vortex.exists?(url))
18
+ @vortex.delete(url)
19
+ end
20
+
21
+ @vortex.cd('/brukere/thomasfl/nyheter/')
22
+ article = Vortex::HtmlArticle.new(:title => "My Sample Title", :introduction => "Introduction",
23
+ :body => "<p>Hello world</p>", :tags => ['tag 1','tag 2','tag 3'])
24
+ published_url = @vortex.publish(article)
25
+ assert @vortex.exists?(published_url)
26
+ assert published_url == url
27
+ end
28
+
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vortex_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Flemming
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-05 00:00:00 +01:00
12
+ date: 2010-01-08 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -61,7 +61,10 @@ files:
61
61
  - lib/vortex_client.rb
62
62
  - lib/vortex_client/string_utils.rb
63
63
  - test/helper.rb
64
+ - test/test_vortex_article_publish.rb
64
65
  - test/test_vortex_client.rb
66
+ - test/test_vortex_collection.rb
67
+ - test/test_vortex_tags.rb
65
68
  - test/test_vortex_utils.rb
66
69
  has_rdoc: true
67
70
  homepage: http://github.com/thomasfl/vortex_client
@@ -95,4 +98,6 @@ test_files:
95
98
  - test/helper.rb
96
99
  - test/test_vortex_article_publish.rb
97
100
  - test/test_vortex_client.rb
101
+ - test/test_vortex_collection.rb
102
+ - test/test_vortex_tags.rb
98
103
  - test/test_vortex_utils.rb