mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/uri/ftp.rb: Revert the previous change pending discussion.
Describe the "previous change" in ChangeLog. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@11757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
acc6ef1fe7
commit
c695175465
2 changed files with 25 additions and 68 deletions
|
|
@ -1,3 +1,7 @@
|
||||||
|
Thu Feb 15 20:31:07 2007 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* lib/uri/ftp.rb: Revert the previous change pending discussion.
|
||||||
|
|
||||||
Thu Feb 15 18:10:09 2007 Akinori MUSHA <knu@iDaemons.org>
|
Thu Feb 15 18:10:09 2007 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* dir.c (glob_helper): Fix the function declaration.
|
* dir.c (glob_helper): Fix the function declaration.
|
||||||
|
|
@ -32,6 +36,9 @@ Thu Feb 15 11:00:26 2007 Akinori MUSHA <knu@iDaemons.org>
|
||||||
* lib/uri/common.rb (escape): regard second string argument as a
|
* lib/uri/common.rb (escape): regard second string argument as a
|
||||||
character set properly. [ruby-dev:27692]
|
character set properly. [ruby-dev:27692]
|
||||||
|
|
||||||
|
* lib/uri/ftp.rb: Attempt to conform to RFC 1738 with regard to
|
||||||
|
relative/absolute paths.
|
||||||
|
|
||||||
* lib/uri: Lovely RDOC patches from mathew (metaATpoboxDOTcom).
|
* lib/uri: Lovely RDOC patches from mathew (metaATpoboxDOTcom).
|
||||||
|
|
||||||
Thu Feb 15 10:57:38 2007 Tietew <tietew@tietew.net>>
|
Thu Feb 15 10:57:38 2007 Tietew <tietew@tietew.net>>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ require 'uri/generic'
|
||||||
module URI
|
module URI
|
||||||
|
|
||||||
#
|
#
|
||||||
# FTP URI syntax is defined by RFC1738 section 3.2.
|
# RFC1738 section 3.2.
|
||||||
#
|
#
|
||||||
class FTP < Generic
|
class FTP < Generic
|
||||||
DEFAULT_PORT = 21
|
DEFAULT_PORT = 21
|
||||||
|
|
@ -22,11 +22,12 @@ module URI
|
||||||
:path, :typecode
|
:path, :typecode
|
||||||
].freeze
|
].freeze
|
||||||
#
|
#
|
||||||
# Typecode is "a", "i" or "d".
|
# Typecode is, "a", "i" or "d".
|
||||||
#
|
# As for "a" the text, as for "i" binary,
|
||||||
# * "a" indicates a text file (the FTP command was ASCII)
|
# as for "d" the directory is displayed.
|
||||||
# * "i" indicates a binary file (FTP command IMAGE)
|
# "A" with the text, as for "i" being binary,
|
||||||
# * "d" indicates the contents of a directory should be displayed
|
# is because the respective data type was called ASCII and
|
||||||
|
# IMAGE with the protocol of FTP.
|
||||||
#
|
#
|
||||||
TYPECODE = ['a', 'i', 'd'].freeze
|
TYPECODE = ['a', 'i', 'd'].freeze
|
||||||
TYPECODE_PREFIX = ';type='.freeze
|
TYPECODE_PREFIX = ';type='.freeze
|
||||||
|
|
@ -51,43 +52,11 @@ module URI
|
||||||
#
|
#
|
||||||
# == Description
|
# == Description
|
||||||
#
|
#
|
||||||
# Creates a new URI::FTP object from components, with syntax checking.
|
# Creates a new URI::FTP object from components of URI::FTP with
|
||||||
#
|
# check. It is scheme, userinfo, host, port, path and typecode. It
|
||||||
# The components accepted are +userinfo+, +host+, +port+, +path+ and
|
# provided by an Array or a Hash. typecode is "a", "i" or "d".
|
||||||
# +typecode+.
|
|
||||||
#
|
|
||||||
# The components should be provided either as an Array, or as a Hash
|
|
||||||
# with keys formed by preceding the component names with a colon.
|
|
||||||
#
|
|
||||||
# If an Array is used, the components must be passed in the order
|
|
||||||
# [userinfo, host, port, path, typecode]
|
|
||||||
#
|
|
||||||
# If the path supplied is absolute, it will be escaped in order to
|
|
||||||
# make it absolute in the URI. Examples:
|
|
||||||
#
|
|
||||||
# require 'uri'
|
|
||||||
#
|
|
||||||
# uri = URI::FTP.build(['user:password', 'ftp.example.com', nil,
|
|
||||||
# '/path/file.> zip', 'i'])
|
|
||||||
# puts uri.to_s -> ftp://user:password@ftp.example.com/%2Fpath/file.zip;type=a
|
|
||||||
#
|
|
||||||
# uri2 = URI::FTP.build({:host => 'ftp.example.com',
|
|
||||||
# :path => 'ruby/src'})
|
|
||||||
# puts uri2.to_s -> ftp://ftp.example.com/ruby/src
|
|
||||||
#
|
#
|
||||||
def self.build(args)
|
def self.build(args)
|
||||||
|
|
||||||
# Fix the incoming path to be generic URL syntax
|
|
||||||
# FTP path -> URL path
|
|
||||||
# foo/bar /foo/bar
|
|
||||||
# /foo/bar /%2Ffoo/bar
|
|
||||||
#
|
|
||||||
if args.kind_of?(Array)
|
|
||||||
args[3] = '/' + args[3].sub(/^\//, '%2F')
|
|
||||||
else
|
|
||||||
args[:path] = '/' + args[:path].sub(/^\//, '%2F')
|
|
||||||
end
|
|
||||||
|
|
||||||
tmp = Util::make_components_hash(self, args)
|
tmp = Util::make_components_hash(self, args)
|
||||||
|
|
||||||
if tmp[:typecode]
|
if tmp[:typecode]
|
||||||
|
|
@ -103,14 +72,16 @@ module URI
|
||||||
#
|
#
|
||||||
# == Description
|
# == Description
|
||||||
#
|
#
|
||||||
# Creates a new URI::FTP object from generic URL components with no
|
# Create a new URI::FTP object from ``generic'' components with no
|
||||||
# syntax checking.
|
# check.
|
||||||
#
|
#
|
||||||
# Unlike build(), this method does not escape the path component as
|
# == Usage
|
||||||
# required by RFC1738; instead it is treated as per RFC2396.
|
|
||||||
#
|
#
|
||||||
# Arguments are +scheme+, +userinfo+, +host+, +port+, +registry+, +path+,
|
# require 'uri'
|
||||||
# +opaque+, +query+ and +fragment+, in that order.
|
# 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"
|
||||||
#
|
#
|
||||||
def initialize(*arg)
|
def initialize(*arg)
|
||||||
super(*arg)
|
super(*arg)
|
||||||
|
|
@ -159,27 +130,6 @@ module URI
|
||||||
return tmp
|
return tmp
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the path from an FTP URI.
|
|
||||||
#
|
|
||||||
# RFC 1738 specifically states that the path for an FTP URI does not
|
|
||||||
# include the / which separates the URI path from the URI host. Example:
|
|
||||||
#
|
|
||||||
# ftp://ftp.example.com/pub/ruby
|
|
||||||
#
|
|
||||||
# The above URI indicates that the client should connect to
|
|
||||||
# ftp.example.com then cd pub/ruby from the initial login directory.
|
|
||||||
#
|
|
||||||
# If you want to cd to an absolute directory, you must include an
|
|
||||||
# escaped / (%2F) in the path. Example:
|
|
||||||
#
|
|
||||||
# ftp://ftp.example.com/%2Fpub/ruby
|
|
||||||
#
|
|
||||||
# This method will then return "/pub/ruby"
|
|
||||||
#
|
|
||||||
def path
|
|
||||||
return @path.sub(/^\//,'').sub(/^%2F/,'/')
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
save_path = nil
|
save_path = nil
|
||||||
if @typecode
|
if @typecode
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue