In Files

  • uri/ftp.rb

URI::FTP

RFC1738 section 3.2.

Constants

COMPONENT
DEFAULT_PORT
TYPECODE

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

Attributes

typecode[R]

Public Class Methods

build(args) click to toggle source

Description

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
            
new(*arg) click to toggle source

Description

Create a new URI::FTP object from “generic'' components with no check.

Usage

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
            
new2(user, password, host, port, path, typecode = nil, arg_check = true) click to toggle source
 
               # 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
            

Public Instance Methods

to_s() click to toggle source
 
               # 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
            
typecode=(typecode) click to toggle source
 
               # File uri/ftp.rb, line 118
def typecode=(typecode)
  check_typecode(typecode)
  set_typecode(typecode)
  typecode
end
            

Protected Instance Methods

set_typecode(v) click to toggle source
 
               # File uri/ftp.rb, line 113
def set_typecode(v)
  @typecode = v
end