class Tilia::DavAcl::Exception::NeedPrivileges

NeedPrivileges

The 403-need privileges is thrown when a user didn't have the appropriate permissions to perform an operation

Attributes

privileges[RW]

The privileges the user didn't have.

@var array

uri[RW]

The relevant uri

@var string

Public Class Methods

new(uri, privileges) click to toggle source

Constructor

@param string uri @param array privileges

# File lib/tilia/dav_acl/exception/need_privileges.rb, line 27
def initialize(uri, privileges)
  @uri = uri
  @privileges = privileges
end

Public Instance Methods

serialize(server, error_node) click to toggle source

Adds in extra information in the xml response.

This method adds the {DAV:}need-privileges element as defined in rfc3744

@param DAVServer server @param DOMElement error_node @return void

# File lib/tilia/dav_acl/exception/need_privileges.rb, line 44
def serialize(server, error_node)
  error = LibXML::XML::Node.new('d:need-privileges')
  error_node << error

  @privileges.each do |privilege|
    resource = LibXML::XML::Node.new('d:resource')
    error << resource

    href = LibXML::XML::Node.new('d:href', "#{server.base_uri}#{@uri}")
    resource << href

    priv = LibXML::XML::Node.new('d:privilege')
    resource << priv

    privilege_parts = /^{([^}]*)}(.*)$/.match(privilege)
    priv << LibXML::XML::Node.new("d:#{privilege_parts[2]}")
  end
end
to_s() click to toggle source

TODO: document

# File lib/tilia/dav_acl/exception/need_privileges.rb, line 33
def to_s
  "User did not have the required privileges (#{@privileges.join(', ')}) for path \"#{@uri}\""
end