Class: DAV4Rack::Carddav::Resource
- Inherits:
-
Resource
- Object
- Resource
- DAV4Rack::Carddav::Resource
show all
- Extended by:
- Helpers::Properties
- Defined in:
- lib/dav4rack_ext/carddav/resource.rb
Constant Summary
collapse
- CARDAV_NS =
'urn:ietf:params:xml:ns:carddav'.freeze
- PRIVILEGES =
%w(read read-acl read-current-user-privilege-set)
Instance Method Summary
collapse
define_properties, extended
Constructor Details
Returns a new instance of Resource.
11
12
13
14
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 11
def initialize(*)
super
raise ArgumentError, "missing current_user lambda" unless options[:current_user]
end
|
Instance Method Details
#children ⇒ Object
95
96
97
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 95
def children
[]
end
|
#current_user ⇒ Object
16
17
18
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 16
def current_user
@current_user ||= options[:current_user].call(env)
end
|
#get_property(element) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 43
def get_property(element)
name = element[:name]
namespace = element[:ns_href]
key = "#{namespace}*#{name}"
if handler = self.class.properties[key]
ret = instance_exec(element, &handler[0])
if ret.is_a?(String) && ret.include?('<')
Nokogiri::XML::DocumentFragment.parse(ret)
else
ret
end
else
Logger.debug("[#{self.class.name}] no handler for #{namespace}:#{name}")
super
end
end
|
#is_self?(other_path) ⇒ Boolean
36
37
38
39
40
41
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 36
def is_self?(other_path)
ary = [@public_path]
ary.push(@public_path+'/') if @public_path[-1] != '/'
ary.push(@public_path[0..-2]) if @public_path[-1] == '/'
ary.include? other_path
end
|
#properties ⇒ Object
87
88
89
90
91
92
93
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 87
def properties
selected_properties = self.class.properties.reject{|key, arr| arr[1] == true }
selected_properties.keys.map do |key|
ns, name = key.split('*')
{:name => name, :ns_href => ns}
end
end
|
#router_params ⇒ Object
24
25
26
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 24
def router_params
env['router.params'] || {}
end
|
#setup ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 28
def setup
@propstat_relative_path = true
@root_xml_attributes = {
'xmlns:C' => CARDAV_NS,
'xmlns:APPLE1' => 'http://calendarserver.org/ns/'
}
end
|
#user_agent ⇒ Object
20
21
22
|
# File 'lib/dav4rack_ext/carddav/resource.rb', line 20
def user_agent
options[:env]['HTTP_USER_AGENT'].to_s rescue ""
end
|