In: |
uri/ftp.rb
|
Parent: | Generic |
RFC1738 section 3.2.
DEFAULT_PORT | = | 21 |
COMPONENT | = | [ :scheme, :userinfo, :host, :port, :path, :typecode |
TYPECODE | = | ['a', 'i', 'd'].freeze |
Typecode is, "a", "i" or "d". As for "a" the text, as for "i" binary, as for "d" the directory is displayed. "A" with the text, as for "i" being binary, is because the respective data type was called ASCII and IMAGE with the protocol of FTP. | ||
TYPECODE_PREFIX | = | ';type='.freeze |
typecode | [R] |
Creates a new URI::FTP object from components of URI::FTP with check. It is scheme, userinfo, host, port, path and typecode. It provided by an Array or a Hash. typecode is "a", "i" or "d".
# File uri/ftp.rb, line 59 def self.build(args) tmp = Util::make_components_hash(self, args) if tmp[:typecode] if tmp[:typecode].size == 1 tmp[:typecode] = TYPECODE_PREFIX + tmp[:typecode] end tmp[:path] << tmp[:typecode] end return super(tmp) end
Create a new URI::FTP object from ``generic’’ components with no check.
require 'uri' p ftp = URI.parse("ftp://ftp.ruby-lang.org/pub/ruby/;type=d") # => #<URI::FTP:0x201fad08 URL:ftp://ftp.ruby-lang.org/pub/ruby/;type=d> p ftp.typecode # => "d"
# File uri/ftp.rb, line 86 def initialize(*arg) super(*arg) @typecode = nil tmp = @path.index(TYPECODE_PREFIX) if tmp typecode = @path[tmp + TYPECODE_PREFIX.size..-1] self.set_path(@path[0..tmp - 1]) if arg[-1] self.typecode = typecode else self.set_typecode(typecode) end end end
# File uri/ftp.rb, line 35 def self.new2(user, password, host, port, path, typecode = nil, arg_check = true) typecode = nil if typecode.size == 0 if typecode && !TYPECODE.include?(typecode) raise ArgumentError, "bad typecode is specified: #{typecode}" end # do escape self.new('ftp', [user, password], host, port, nil, typecode ? path + TYPECODE_PREFIX + typecode : path, nil, nil, nil, arg_check) end
# File uri/ftp.rb, line 133 def to_s save_path = nil if @typecode save_path = @path @path = @path + TYPECODE_PREFIX + @typecode end str = super if @typecode @path = save_path end return str end