Class: RUtilAnts::URLAccess::URLHandlers::FTP
- Inherits:
-
Object
- Object
- RUtilAnts::URLAccess::URLHandlers::FTP
- Defined in:
- lib/rUtilAnts/URLHandlers/FTP.rb
Overview
Handler of FTP URLs
Class Method Summary collapse
-
.get_matching_regexps ⇒ Object
Get a list of regexps matching the URL to get to this handler.
Instance Method Summary collapse
-
#get_content(iFollowRedirections) ⇒ Object
Get the content of the URL.
-
#get_corresponding_file_base_name ⇒ Object
Get a corresponding file base name.
-
#get_crc ⇒ Object
Get the current CRC of the URL.
-
#get_server_id ⇒ Object
Get the server ID.
-
#initialize(iURL) ⇒ FTP
constructor
Constructor.
Constructor Details
#initialize(iURL) ⇒ FTP
Constructor
- Parameters
-
iURL (String): The URL that this handler will manage
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 24 def initialize(iURL) @URL = iURL lURLMatch = iURL.match(/^(ftp|ftps):\/\/([^\/]*)\/(.*)$/) if (lURLMatch == nil) lURLMatch = iURL.match(/^(ftp|ftps):\/\/(.*)$/) end if (lURLMatch == nil) log_bug "URL #{iURL} was identified as an ftp like, but it appears to be false." else @URLProtocol, @URLServer, @URLPath = lURLMatch[1..3] end end |
Class Method Details
.get_matching_regexps ⇒ Object
Get a list of regexps matching the URL to get to this handler
- Return
-
list<Regexp>: The list of regexps matching URLs from this handler
14 15 16 17 18 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 14 def self.get_matching_regexps return [ /^(ftp|ftps):\/\/.*$/ ] end |
Instance Method Details
#get_content(iFollowRedirections) ⇒ Object
Get the content of the URL
- Parameters
-
iFollowRedirections (Boolean): Do we follow redirections while accessing the content ?
- Return
-
Integer: Type of content returned
-
Object: The content, depending on the type previously returned:
-
Exception if CONTENT_ERROR: The corresponding error
-
String if CONTENT_REDIRECT: The new URL
-
String if CONTENT_STRING: The real content
-
String if CONTENT_LOCALFILENAME: The name of the local file name storing the content
-
String if CONTENT_LOCALFILENAME_TEMPORARY: The name of the temporary local file name storing the content
-
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 86 def get_content(iFollowRedirections) rContentFormat = nil rContent = nil begin require 'net/ftp' lFTPConnection = Net::FTP.new(@URLServer) lFTPConnection.login lFTPConnection.chdir(File.dirname(@URLPath)) rContent = get_corresponding_file_base_name rContentFormat = CONTENT_LOCALFILENAME_TEMPORARY log_debug "URL #{@URL} => Temporary file #{rContent}" lFTPConnection.getbinaryfile(File.basename(@URLPath), rContent) lFTPConnection.close rescue Exception rContent = $! rContentFormat = CONTENT_ERROR log_debug "Error accessing #{@URL}: #{rContent}" end return rContentFormat, rContent end |
#get_corresponding_file_base_name ⇒ Object
Get a corresponding file base name. This method has to make sure file extensions are respected, as it can be used for further processing.
- Return
-
String: The file name
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 59 def get_corresponding_file_base_name lBase = File.basename(@URLPath) lExt = File.extname(@URLPath) lFileName = nil if (lExt.empty?) lFileName = lBase else # Check that extension has no characters following the URL (#, ? and ;) lBase = lBase[0..lBase.size-lExt.size-1] lFileName = "#{lBase}#{lExt.gsub(/^([^#\?;]*).*$/,'\1')}" end return get_valid_file_name(lFileName) end |
#get_crc ⇒ Object
Get the current CRC of the URL
- Return
-
Integer: The CRC
49 50 51 52 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 49 def get_crc # We consider FTP URLs to be definitive: CRCs will never change. return 0 end |
#get_server_id ⇒ Object
Get the server ID
- Return
-
String: The server ID
41 42 43 |
# File 'lib/rUtilAnts/URLHandlers/FTP.rb', line 41 def get_server_id return "#{@URLProtocol}://#{@URLServer}" end |