class Net::SFTP::Protocol::V04::Attributes
A class representing the attributes of a file or directory on the server. It may be used to specify new attributes, or to query existing attributes. This particular class is specific to versions 4 and 5 of the SFTP
protocol.
To specify new attributes, just pass a hash as the argument to the constructor. The following keys are supported:
- :type
-
the type of the item (integer, one of the T_ constants)
- :size
-
the size of the item (integer)
- :uid
-
the user-id that owns the file (integer)
- :gid
-
the group-id that owns the file (integer)
- :owner
-
the name of the user that owns the file (string)
- :group
-
the name of the group that owns the file (string)
- :permissions
-
the permissions on the file (integer, e.g. 0755)
- :atime
-
the access time of the file (integer, seconds since epoch)
- :atime_nseconds
-
the nanosecond component of atime (integer)
- :createtime
-
the time at which the file was created (integer, seconds since epoch)
- :createtime_nseconds
-
the nanosecond component of createtime (integer)
- :mtime
-
the modification time of the file (integer, seconds since epoch)
- :mtime_nseconds
-
the nanosecond component of mtime (integer)
- :acl
-
an array of
ACL
entries for the item
- :extended
-
a hash of name/value pairs identifying extended info
Likewise, when the server sends an Attributes
object, all of the above attributes are exposed as methods (though not all will be set with non-nil values from the server).
Constants
- ACL
A simple struct for representing a single entry in an Access Control List. (See
Net::SFTP::Constants::ACE
)- F_ACCESSTIME
- F_ACL
- F_CREATETIME
- F_MODIFYTIME
- F_OWNERGROUP
- F_SUBSECOND_TIMES
Attributes
The array of access control entries for this item.
The nanosecond component of the access time.
The creation time of the remote item, in seconds since the epoch.
The nanosecond component of the creation time.
The group of the item on the remote server, as a string.
The nanosecond component of the modification time.
The owner of the item on the remote server, as a string.
The type of the item on the remote server. Must be one of the T_* constants.
Public Class Methods
Create a new Attributes
instance with the given attributes. The following keys are supported:
- :type
-
the type of the item (integer, one of the T_ constants)
- :size
-
the size of the item (integer)
- :uid
-
the user-id that owns the file (integer)
- :gid
-
the group-id that owns the file (integer)
- :owner
-
the name of the user that owns the file (string)
- :group
-
the name of the group that owns the file (string)
- :permissions
-
the permissions on the file (integer, e.g. 0755)
- :atime
-
the access time of the file (integer, seconds since epoch)
- :atime_nseconds
-
the nanosecond component of atime (integer)
- :createtime
-
the time at which the file was created (integer, seconds since epoch)
- :createtime_nseconds
-
the nanosecond component of createtime (integer)
- :mtime
-
the modification time of the file (integer, seconds since epoch)
- :mtime_nseconds
-
the nanosecond component of mtime (integer)
- :acl
-
an array of
ACL
entries for the item
- :extended
-
a hash of name/value pairs identifying extended info
All of them default to nil
if omitted, except for type
, which defaults to T_REGULAR.
Net::SFTP::Protocol::V01::Attributes::new
# File lib/net/sftp/protocol/04/attributes.rb, line 124 def initialize(attributes={}) super attributes[:type] ||= T_REGULAR end
Private Class Methods
A helper method for parsing the ACL
entry in an Attributes
struct.
# File lib/net/sftp/protocol/04/attributes.rb, line 69 def parse_acl(buffer) acl_buf = Net::SSH::Buffer.new(buffer.read_string) acl = [] acl_buf.read_long.times do acl << ACL.new(acl_buf.read_long, acl_buf.read_long, acl_buf.read_long, acl_buf.read_string) end acl end
Private Instance Methods
Performs protocol-version-specific encoding of the access control list, if one exists.
# File lib/net/sftp/protocol/04/attributes.rb, line 141 def encode_acl(buffer) acl_buf = Net::SSH::Buffer.from(:long, acl.length) acl.each do |item| acl_buf.write_long item.type, item.flag, item.mask acl_buf.write_string item.who end buffer.write_string(acl_buf.to_s) end
Perform protocol-version-specific preparations for serialization.
# File lib/net/sftp/protocol/04/attributes.rb, line 132 def prepare_serialization! # force the group/owner to be translated from uid/gid, if those keys # were given on instantiation owner group end