Class: Jabber::FileTransfer::FileSource
- Inherits:
-
Object
- Object
- Jabber::FileTransfer::FileSource
- Includes:
- TransferSource
- Defined in:
- lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb
Overview
Simple implementation of TransferSource for sending simple files (supports ranged transfers)
Instance Method Summary collapse
- #can_range? ⇒ Boolean
- #date ⇒ Object
- #filename ⇒ Object
-
#initialize(filename) ⇒ FileSource
constructor
A new instance of FileSource.
- #length=(l) ⇒ Object
-
#mime ⇒ Object
Everything is ‘application/octet-stream’.
-
#read(length = 512) ⇒ Object
Because it can_range?, this method implements length checking.
- #seek(position) ⇒ Object
- #size ⇒ Object
Methods included from TransferSource
Constructor Details
#initialize(filename) ⇒ FileSource
Returns a new instance of FileSource.
70 71 72 73 74 75 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 70 def initialize(filename) @file = File.new(filename) @filename = filename @bytes_read = 0 @length = nil end |
Instance Method Details
#can_range? ⇒ Boolean
118 119 120 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 118 def can_range? true end |
#date ⇒ Object
91 92 93 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 91 def date @file.mtime end |
#filename ⇒ Object
77 78 79 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 77 def filename File::basename @filename end |
#length=(l) ⇒ Object
114 115 116 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 114 def length=(l) @length = l end |
#mime ⇒ Object
Everything is ‘application/octet-stream’
83 84 85 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 83 def mime 'application/octet-stream' end |
#read(length = 512) ⇒ Object
Because it can_range?, this method implements length checking
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 97 def read(length=512) if @length return nil if @bytes_read >= @length # Already read everything requested if @bytes_read + length > @length # Will we read more than requested? length = @length - @bytes_read # Truncate it! end end buf = @file.read(length) @bytes_read += buf.size if buf buf end |
#seek(position) ⇒ Object
110 111 112 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 110 def seek(position) @file.seek(position) end |
#size ⇒ Object
87 88 89 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb', line 87 def size File.size @filename end |