Class | URI::FTP
In: | uri/ftp.rb
Parent: | Generic

RFC1738 section 3.2.

### Methods

build new new2 to_s typecode=

### Constants

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

### Attributes

typecode | [R] |

### Public Class methods

build(args)

## 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".

[Source]

    # 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)

## 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"

[Source]

    # 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)

[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()

[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)

[Source]

    # File uri/ftp.rb, line 118
        def typecode=(typecode)
          check_typecode(typecode)
          set_typecode(typecode)
          typecode
        end

[Validate]