class RackDAV::Resource
Attributes
Public Class Methods
# File lib/rack_dav/resource.rb, line 7 def initialize(path, request, response, options) @path = path @request = request @response = response @options = options end
Public Instance Methods
# File lib/rack_dav/resource.rb, line 118 def ==(other) path == other.path end
# File lib/rack_dav/resource.rb, line 130 def child(name, option={}) self.class.new(path + '/' + name, @request, @response, options) end
If this is a collection, return the child resources.
# File lib/rack_dav/resource.rb, line 15 def children raise NotImplementedError end
Is this resource a collection?
# File lib/rack_dav/resource.rb, line 20 def collection? raise NotImplementedError end
Return the size in bytes for this resource.
# File lib/rack_dav/resource.rb, line 64 def content_length raise NotImplementedError end
Return the mime type of this resource.
# File lib/rack_dav/resource.rb, line 59 def content_type raise NotImplementedError end
HTTP COPY request.
Copy this resource to given destination resource.
# File lib/rack_dav/resource.rb, line 99 def copy(dest) raise NotImplementedError end
Return the creation time.
# File lib/rack_dav/resource.rb, line 30 def creation_date raise NotImplementedError end
HTTP DELETE request.
Delete this resource.
# File lib/rack_dav/resource.rb, line 92 def delete raise NotImplementedError end
# File lib/rack_dav/resource.rb, line 177 def descendants list = [] children.each do |child| list << child list.concat(child.descendants) end list end
# File lib/rack_dav/resource.rb, line 126 def display_name name end
Return an Etag, an unique hash value for this resource.
# File lib/rack_dav/resource.rb, line 45 def etag raise NotImplementedError end
Does this recource exist?
# File lib/rack_dav/resource.rb, line 25 def exist? raise NotImplementedError end
HTTP GET request.
Write the content of the resource to the response.body.
# File lib/rack_dav/resource.rb, line 71 def get raise NotImplementedError end
# File lib/rack_dav/resource.rb, line 142 def get_property(name) case name when 'resourcetype' then resource_type when 'displayname' then display_name when 'creationdate' then creation_date.xmlschema when 'getcontentlength' then content_length.to_s when 'getcontenttype' then content_type when 'getetag' then etag when 'getlastmodified' then last_modified.httpdate else self.get_custom_property(name) if self.respond_to?(:get_custom_property) end end
Return the time of last modification.
# File lib/rack_dav/resource.rb, line 35 def last_modified raise NotImplementedError end
Set the time of last modification.
# File lib/rack_dav/resource.rb, line 40 def last_modified=(time) raise NotImplementedError end
# File lib/rack_dav/resource.rb, line 134 def lockable? self.respond_to?(:lock) && self.respond_to?(:unlock) end
HTTP MKCOL request.
Create this resource as collection.
# File lib/rack_dav/resource.rb, line 114 def make_collection raise NotImplementedError end
HTTP MOVE request.
Move this resource to given destination resource.
# File lib/rack_dav/resource.rb, line 106 def move(dest) copy(dest) delete end
# File lib/rack_dav/resource.rb, line 122 def name File.basename(path) end
# File lib/rack_dav/resource.rb, line 171 def parent elements = @path.scan(/[^\/]+/) return nil if elements.empty? self.class.new('/' + elements[0..-2].to_a.join('/'), @options) end
HTTP POST request.
Usually forbidden.
# File lib/rack_dav/resource.rb, line 85 def post raise NotImplementedError end
# File lib/rack_dav/resource.rb, line 138 def property_names %w(creationdate displayname getlastmodified getetag resourcetype getcontenttype getcontentlength) end
HTTP PUT request.
Save the content of the request.body.
# File lib/rack_dav/resource.rb, line 78 def put raise NotImplementedError end
# File lib/rack_dav/resource.rb, line 167 def remove_property(name) raise HTTPStatus::Forbidden if property_names.include?(name) end
Return the resource type.
If this is a collection, return a collection element
# File lib/rack_dav/resource.rb, line 52 def resource_type if collection? Nokogiri::XML::fragment('<D:collection xmlns:D="DAV:"/>').children.first end end
# File lib/rack_dav/resource.rb, line 155 def set_property(name, value) case name when 'resourcetype' then self.resource_type = value when 'getcontenttype' then self.content_type = value when 'getetag' then self.etag = value when 'getlastmodified' then self.last_modified = Time.httpdate(value) else self.set_custom_property(name, value) if self.respond_to?(:set_custom_property) end rescue ArgumentError raise HTTPStatus::Conflict end