rUtilAnts 0.3.0.20110825 → 1.0.0.20120223
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +7 -1
- data/ChangeLog +16 -0
- data/LICENSE +1 -1
- data/README +2 -5
- data/ReleaseInfo +8 -8
- data/lib/rUtilAnts/Archive.rb +26 -26
- data/lib/rUtilAnts/ForeignProcess.rb +20 -21
- data/lib/rUtilAnts/GUI.rb +38 -38
- data/lib/rUtilAnts/GUI/BugReportDialog.rb +5 -5
- data/lib/rUtilAnts/Logging.rb +124 -254
- data/lib/rUtilAnts/Misc.rb +70 -37
- data/lib/rUtilAnts/MySQLPool.rb +31 -31
- data/lib/rUtilAnts/Platform.rb +33 -16
- data/lib/rUtilAnts/Platforms/i386-cygwin/PlatformInfo.rb +46 -15
- data/lib/rUtilAnts/Platforms/i386-linux/PlatformInfo.rb +46 -15
- data/lib/rUtilAnts/Platforms/i386-mingw32/PlatformInfo.rb +58 -17
- data/lib/rUtilAnts/Platforms/i386-mswin32/PlatformInfo.rb +58 -17
- data/lib/rUtilAnts/Platforms/x86_64-linux/PlatformInfo.rb +46 -15
- data/lib/rUtilAnts/Plugins.rb +54 -139
- data/lib/rUtilAnts/SingletonProxy.rb +33 -0
- data/lib/rUtilAnts/URLAccess.rb +44 -66
- data/lib/rUtilAnts/URLCache.rb +39 -56
- data/lib/rUtilAnts/URLHandlers/DataImage.rb +20 -20
- data/lib/rUtilAnts/URLHandlers/FTP.rb +24 -24
- data/lib/rUtilAnts/URLHandlers/HTTP.rb +21 -21
- data/lib/rUtilAnts/URLHandlers/LocalFile.rb +19 -19
- metadata +10 -10
@@ -0,0 +1,33 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2012 Muriel Salvan (muriel@x-aeon.com)
|
3
|
+
# Licensed under the terms specified in LICENSE file. No warranty is provided.
|
4
|
+
#++
|
5
|
+
|
6
|
+
module RUtilAnts
|
7
|
+
|
8
|
+
# Make public methods from a module accessible in another module, using a singleton as proxy
|
9
|
+
#
|
10
|
+
# Parameters::
|
11
|
+
# * *iSrcModule* (_Module_): Module to get public methods from
|
12
|
+
# * *oDstModule* (_Module_): Module that will encapsulate the singleton and route all public methods through that singleton
|
13
|
+
def self.make_singleton_proxy(iSrcModule, oDstModule)
|
14
|
+
lSrcModuleConstName = iSrcModule.name.gsub(/\W/,'_')
|
15
|
+
|
16
|
+
# Create the singleton class
|
17
|
+
lSingletonClass = oDstModule.const_set("SingletonClassForModule__#{lSrcModuleConstName}", Class.new)
|
18
|
+
lSingletonClass.class_eval("include #{iSrcModule}")
|
19
|
+
|
20
|
+
# Instantiate it in the module
|
21
|
+
lSymSingletonVarName = "@@__SingletonForModule__#{lSrcModuleConstName}".to_sym
|
22
|
+
oDstModule.send(:class_variable_set, lSymSingletonVarName, lSingletonClass.new)
|
23
|
+
|
24
|
+
# Create public methods from iSrcModule to oDstModule, using the singleton as a proxy
|
25
|
+
iSrcModule.instance_methods.map { |iMethodName| iMethodName.to_sym }.each do |iSymMethodName|
|
26
|
+
oDstModule.send(:define_method, iSymMethodName) do |*iArgs, &iBlock|
|
27
|
+
oDstModule.send(:class_variable_get, lSymSingletonVarName).send(iSymMethodName, *iArgs, &iBlock)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/rUtilAnts/URLAccess.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009 -
|
2
|
+
# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
|
3
3
|
# Licensed under the terms specified in LICENSE file. No warranty is provided.
|
4
4
|
#++
|
5
5
|
|
@@ -18,11 +18,10 @@ module RUtilAnts
|
|
18
18
|
class RedirectionError < RuntimeError
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
class Manager
|
21
|
+
module URLAccessInterface
|
23
22
|
|
24
23
|
# Constructor
|
25
|
-
def
|
24
|
+
def init_url_access
|
26
25
|
# Get the map of plugins to read URLs
|
27
26
|
# map< String, [ list<Regexp>, String ] >
|
28
27
|
# map< PluginName, [ List of matching regexps, Plugin class name ] >
|
@@ -32,11 +31,11 @@ module RUtilAnts
|
|
32
31
|
lPluginName = File.basename(iFileName)[0..-4]
|
33
32
|
require "rUtilAnts/URLHandlers/#{lPluginName}"
|
34
33
|
@Plugins[lPluginName] = [
|
35
|
-
eval("RUtilAnts::
|
36
|
-
"RUtilAnts::
|
34
|
+
eval("RUtilAnts::URLAccess::URLHandlers::#{lPluginName}::get_matching_regexps"),
|
35
|
+
"RUtilAnts::URLAccess::URLHandlers::#{lPluginName}"
|
37
36
|
]
|
38
37
|
rescue Exception
|
39
|
-
|
38
|
+
log_exc$!, "Error while requiring URLHandler plugin #{iFileName}"
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
@@ -45,27 +44,27 @@ module RUtilAnts
|
|
45
44
|
# No cache.
|
46
45
|
# It calls a code block with the binary content of the URL (or a local file name if required).
|
47
46
|
#
|
48
|
-
# Parameters
|
47
|
+
# Parameters::
|
49
48
|
# * *iURL* (_String_): The URL (used to detect cyclic redirections)
|
50
49
|
# * *iParameters* (<em>map<Symbol,Object></em>): Additional parameters:
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
50
|
+
# * *:follow_redirections* (_Boolean_): Do we follow redirections ? [optional = true]
|
51
|
+
# * *:nbr_redirections_allowed* (_Integer_): Number of redirections allowed [optional = 10]
|
52
|
+
# * *:local_file_access* (_Boolean_): Do we need a local file to read the content from ? If not, the content itslef will be given the code block. [optional = false]
|
53
|
+
# * *:url_handler* (_Object_): The URL handler, if it has already been instantiated, or nil otherwise [optional = nil]
|
55
54
|
# * _CodeBlock_: The code returning the object corresponding to the content:
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
# Return
|
55
|
+
# * *iContent* (_String_): File content, or file name if :local_file_access was true
|
56
|
+
# * *iFileBaseName* (_String_): The base name the file could have. Useful to get file name extensions.
|
57
|
+
# * Return::
|
58
|
+
# * _Exception_: The error encountered, or nil in case of success
|
59
|
+
# Return::
|
61
60
|
# * _Exception_: The error encountered, or nil in case of success
|
62
|
-
def
|
61
|
+
def access_file(iURL, iParameters = {})
|
63
62
|
rError = nil
|
64
63
|
|
65
64
|
lFollowRedirections = iParameters[:lFollowRedirections]
|
66
|
-
lNbrRedirectionsAllowed = iParameters[:
|
67
|
-
lLocalFileAccess = iParameters[:
|
68
|
-
lURLHandler = iParameters[:
|
65
|
+
lNbrRedirectionsAllowed = iParameters[:nbr_redirections_allowed]
|
66
|
+
lLocalFileAccess = iParameters[:local_file_access]
|
67
|
+
lURLHandler = iParameters[:url_handler]
|
69
68
|
if (lFollowRedirections == nil)
|
70
69
|
lFollowRedirections = true
|
71
70
|
end
|
@@ -76,10 +75,10 @@ module RUtilAnts
|
|
76
75
|
lLocalFileAccess = false
|
77
76
|
end
|
78
77
|
if (lURLHandler == nil)
|
79
|
-
lURLHandler =
|
78
|
+
lURLHandler = get_url_handler(iURL)
|
80
79
|
end
|
81
80
|
# Get the content from the handler
|
82
|
-
lContentFormat, lContent = lURLHandler.
|
81
|
+
lContentFormat, lContent = lURLHandler.get_content(lFollowRedirections)
|
83
82
|
case (lContentFormat)
|
84
83
|
when CONTENT_ERROR
|
85
84
|
rError = lContent
|
@@ -92,10 +91,10 @@ module RUtilAnts
|
|
92
91
|
elsif (lFollowRedirections)
|
93
92
|
# Follow the redirection if we want it
|
94
93
|
lNewParameters = iParameters.clone
|
95
|
-
lNewParameters[:
|
94
|
+
lNewParameters[:nbr_redirections_allowed] = lNbrRedirectionsAllowed - 1
|
96
95
|
# Reset the URL handler for the new parameters.
|
97
|
-
lNewParameters[:
|
98
|
-
rError =
|
96
|
+
lNewParameters[:url_handler] = nil
|
97
|
+
rError = access_file(lContent, lNewParameters) do |iContent, iBaseName|
|
99
98
|
yield(iContent, iBaseName)
|
100
99
|
end
|
101
100
|
else
|
@@ -106,7 +105,7 @@ module RUtilAnts
|
|
106
105
|
if (lLocalFileAccess)
|
107
106
|
# Write the content in a local temporary file
|
108
107
|
require 'tmpdir'
|
109
|
-
lBaseName = lURLHandler.
|
108
|
+
lBaseName = lURLHandler.get_corresponding_file_base_name
|
110
109
|
lLocalFileName = "#{Dir.tmpdir}/URLCache/#{lBaseName}"
|
111
110
|
begin
|
112
111
|
require 'fileutils'
|
@@ -125,7 +124,7 @@ module RUtilAnts
|
|
125
124
|
end
|
126
125
|
else
|
127
126
|
# Give it to the code block directly
|
128
|
-
yield(lContent, lURLHandler.
|
127
|
+
yield(lContent, lURLHandler.get_corresponding_file_base_name)
|
129
128
|
end
|
130
129
|
when CONTENT_LOCALFILENAME, CONTENT_LOCALFILENAME_TEMPORARY
|
131
130
|
lLocalFileName = lContent
|
@@ -142,7 +141,7 @@ module RUtilAnts
|
|
142
141
|
end
|
143
142
|
end
|
144
143
|
if (rError == nil)
|
145
|
-
yield(lContent, lURLHandler.
|
144
|
+
yield(lContent, lURLHandler.get_corresponding_file_base_name)
|
146
145
|
end
|
147
146
|
# If the file was temporary, delete it
|
148
147
|
if (lContentFormat == CONTENT_LOCALFILENAME_TEMPORARY)
|
@@ -155,11 +154,11 @@ module RUtilAnts
|
|
155
154
|
|
156
155
|
# Get the URL handler corresponding to this URL
|
157
156
|
#
|
158
|
-
# Parameters
|
157
|
+
# Parameters::
|
159
158
|
# * *iURL* (_String_): The URL
|
160
|
-
# Return
|
159
|
+
# Return::
|
161
160
|
# * _Object_: The URL handler
|
162
|
-
def
|
161
|
+
def get_url_handler(iURL)
|
163
162
|
rURLHandler = nil
|
164
163
|
|
165
164
|
# Try out every regexp unless it matches.
|
@@ -187,44 +186,23 @@ module RUtilAnts
|
|
187
186
|
|
188
187
|
end
|
189
188
|
|
190
|
-
#
|
191
|
-
|
192
|
-
$rUtilAnts_URLAccess_Manager = Manager.new
|
193
|
-
Object.module_eval('include RUtilAnts::URLAccess')
|
194
|
-
end
|
189
|
+
# A class giving access to the URL access functionnality
|
190
|
+
class Manager
|
195
191
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
# * *iURL* (_String_): The URL (used to detect cyclic redirections)
|
202
|
-
# * *iParameters* (<em>map<Symbol,Object></em>): Additional parameters:
|
203
|
-
# ** *:FollowRedirections* (_Boolean_): Do we follow redirections ? [optional = true]
|
204
|
-
# ** *:NbrRedirectionsAllowed* (_Integer_): Number of redirections allowed [optional = 10]
|
205
|
-
# ** *:LocalFileAccess* (_Boolean_): Do we need a local file to read the content from ? If not, the content itself will be given the code block. [optional = false]
|
206
|
-
# ** *:URLHandler* (_Object_): The URL handler, if it has already been instantiated, or nil otherwise [optional = nil]
|
207
|
-
# * _CodeBlock_: The code returning the object corresponding to the content:
|
208
|
-
# ** *iContent* (_String_): File content, or file name if :LocalFileAccess was true
|
209
|
-
# ** *iFileBaseName* (_String_): The base name the file could have. Useful to get file name extensions.
|
210
|
-
# ** Return:
|
211
|
-
# ** _Exception_: The error encountered, or nil in case of success
|
212
|
-
# Return:
|
213
|
-
# * _Exception_: The error encountered, or nil in case of success
|
214
|
-
def accessFile(iURL, iParameters = {})
|
215
|
-
return $rUtilAnts_URLAccess_Manager.accessFile(iURL, iParameters) do |iContent, iBaseName|
|
216
|
-
yield(iContent, iBaseName)
|
192
|
+
include URLAccessInterface
|
193
|
+
|
194
|
+
# Constructor
|
195
|
+
def initialize
|
196
|
+
init_url_access
|
217
197
|
end
|
198
|
+
|
218
199
|
end
|
219
200
|
|
220
|
-
#
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
# * _Object_: The URL handler
|
226
|
-
def getURLHandler(iURL)
|
227
|
-
return $rUtilAnts_URLAccess_Manager.getURLHandler(iURL)
|
201
|
+
# Initialize a global plugins cache
|
202
|
+
def self.install_url_access_on_object
|
203
|
+
require 'rUtilAnts/SingletonProxy'
|
204
|
+
RUtilAnts::make_singleton_proxy(RUtilAnts::URLAccess::URLAccessInterface, Object)
|
205
|
+
init_url_access
|
228
206
|
end
|
229
207
|
|
230
208
|
end
|
data/lib/rUtilAnts/URLCache.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009 -
|
2
|
+
# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
|
3
3
|
# Licensed under the terms specified in LICENSE file. No warranty is provided.
|
4
4
|
#++
|
5
5
|
|
@@ -7,17 +7,14 @@ module RUtilAnts
|
|
7
7
|
|
8
8
|
module URLCache
|
9
9
|
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
class URLCache
|
10
|
+
# Exception for reporting server down errors.
|
11
|
+
class ServerDownError < RuntimeError
|
12
|
+
end
|
14
13
|
|
15
|
-
|
16
|
-
class ServerDownError < RuntimeError
|
17
|
-
end
|
14
|
+
module URLCacheInterface
|
18
15
|
|
19
16
|
# Constructor
|
20
|
-
def
|
17
|
+
def init_url_cache
|
21
18
|
# Map of known contents, interpreted in many flavors
|
22
19
|
# map< Integer, [ Integer, Object ] >
|
23
20
|
# map< URL's hash, [ CRC, Content ] >
|
@@ -35,39 +32,39 @@ module RUtilAnts
|
|
35
32
|
# * file:// protocol
|
36
33
|
# It also handles redirections or zipped files
|
37
34
|
#
|
38
|
-
# Parameters
|
35
|
+
# Parameters::
|
39
36
|
# * *iURL* (_String_): The URL
|
40
37
|
# * *iParameters* (<em>map<Symbol,Object></em>): Additional parameters:
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
38
|
+
# * *:force_load* (_Boolean_): Do we force to refresh the cache ? [optional = false]
|
39
|
+
# * *:follow_redirections* (_Boolean_): Do we follow redirections ? [optional = true]
|
40
|
+
# * *:nbr_redirections_allowed* (_Integer_): Number of redirections allowed [optional = 10]
|
41
|
+
# * *:local_file_access* (_Boolean_): Do we need a local file to read the content from ? If not, the content itslef will be given the code block. [optional = false]
|
45
42
|
# * _CodeBlock_: The code returning the object corresponding to the content:
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
# Return
|
43
|
+
# * *iContent* (_String_): File content, or file name if :local_file_access was true
|
44
|
+
# * Return::
|
45
|
+
# * _Object_: Object read from the content, or nil in case of error
|
46
|
+
# * _Exception_: The error encountered, or nil in case of success
|
47
|
+
# Return::
|
51
48
|
# * <em>Object</em>: The corresponding URL content, or nil in case of failure
|
52
49
|
# * _Exception_: The error, or nil in case of success
|
53
|
-
def
|
50
|
+
def get_url_content(iURL, iParameters = {})
|
54
51
|
rObject = nil
|
55
52
|
rError = nil
|
56
53
|
|
57
54
|
# Parse parameters
|
58
|
-
lForceLoad = iParameters[:
|
55
|
+
lForceLoad = iParameters[:force_load]
|
59
56
|
if (lForceLoad == nil)
|
60
57
|
lForceLoad = false
|
61
58
|
end
|
62
59
|
# Get the URL handler corresponding to this URL
|
63
|
-
lURLHandler =
|
64
|
-
lServerID = lURLHandler.
|
60
|
+
lURLHandler = get_url_handler(iURL)
|
61
|
+
lServerID = lURLHandler.get_server_id
|
65
62
|
if (@HostsDown.has_key?(lServerID))
|
66
63
|
rError = ServerDownError.new("Server #{iURL} is currently down.")
|
67
64
|
else
|
68
65
|
lURLHash = iURL.hash
|
69
66
|
# Check if it is in the cache, or if we force refresh, or if the URL was invalidated
|
70
|
-
lCurrentCRC = lURLHandler.
|
67
|
+
lCurrentCRC = lURLHandler.get_crc
|
71
68
|
if ((@URLs[lURLHash] == nil) or
|
72
69
|
(lForceLoad) or
|
73
70
|
(@URLs[lURLHash][0] != lCurrentCRC))
|
@@ -76,7 +73,7 @@ module RUtilAnts
|
|
76
73
|
@URLs[lURLHash] = nil
|
77
74
|
# Get the object
|
78
75
|
lObject = nil
|
79
|
-
lAccessError =
|
76
|
+
lAccessError = access_file(iURL, iParameters.merge(:url_handler => lURLHandler)) do |iContent, iBaseName|
|
80
77
|
lObject, rError = yield(iContent)
|
81
78
|
end
|
82
79
|
if (lAccessError != nil)
|
@@ -105,39 +102,25 @@ module RUtilAnts
|
|
105
102
|
|
106
103
|
end
|
107
104
|
|
108
|
-
#
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
end
|
105
|
+
# Class that caches every access to a URI (local file name, http, data...).
|
106
|
+
# This ensures just that several files are instantiated just once.
|
107
|
+
# For local files, it takes into account the file modification date/time to know if the Wx::Bitmap file has to be refreshed.
|
108
|
+
class URLCache
|
113
109
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
# * file:// protocol
|
120
|
-
# It also handles redirections or zipped files
|
121
|
-
#
|
122
|
-
# Parameters:
|
123
|
-
# * *iURL* (_String_): The URL
|
124
|
-
# * *iParameters* (<em>map<Symbol,Object></em>): Additional parameters:
|
125
|
-
# ** *:ForceLoad* (_Boolean_): Do we force to refresh the cache ? [optional = false]
|
126
|
-
# ** *:FollowRedirections* (_Boolean_): Do we follow redirections ? [optional = true]
|
127
|
-
# ** *:NbrRedirectionsAllowed* (_Integer_): Number of redirections allowed [optional = 10]
|
128
|
-
# ** *:LocalFileAccess* (_Boolean_): Do we need a local file to read the content from ? If not, the content itself will be given the code block. [optional = false]
|
129
|
-
# * _CodeBlock_: The code returning the object corresponding to the content:
|
130
|
-
# ** *iContent* (_String_): File content, or file name if :LocalFileAccess was true
|
131
|
-
# ** Returns:
|
132
|
-
# ** _Object_: Object read from the content, or nil in case of error
|
133
|
-
# ** _Exception_: The error encountered, or nil in case of success
|
134
|
-
# Return:
|
135
|
-
# * <em>Object</em>: The corresponding URL content, or nil in case of failure
|
136
|
-
# * _Exception_: The error, or nil in case of success
|
137
|
-
def getURLContent(iURL, iParameters = {})
|
138
|
-
return $rUtilAnts_URLCache.getURLContent(iURL, iParameters) do |iContent|
|
139
|
-
next yield(iContent)
|
110
|
+
include URLCacheInterface
|
111
|
+
|
112
|
+
# Constructor
|
113
|
+
def initialize
|
114
|
+
init_url_cache
|
140
115
|
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
# Initialize a global cache
|
120
|
+
def self.install_url_cache_on_object
|
121
|
+
require 'rUtilAnts/SingletonProxy'
|
122
|
+
RUtilAnts::make_singleton_proxy(RUtilAnts::URLCache::URLCacheInterface, Object)
|
123
|
+
init_url_cache
|
141
124
|
end
|
142
125
|
|
143
126
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009 -
|
2
|
+
# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
|
3
3
|
# Licensed under the terms specified in LICENSE file. No warranty is provided.
|
4
4
|
#++
|
5
5
|
|
6
6
|
module RUtilAnts
|
7
7
|
|
8
|
-
module
|
8
|
+
module URLAccess
|
9
9
|
|
10
10
|
module URLHandlers
|
11
11
|
|
@@ -14,9 +14,9 @@ module RUtilAnts
|
|
14
14
|
|
15
15
|
# Get a list of regexps matching the URL to get to this handler
|
16
16
|
#
|
17
|
-
# Return
|
17
|
+
# Return::
|
18
18
|
# * <em>list<Regexp></em>: The list of regexps matching URLs from this handler
|
19
|
-
def self.
|
19
|
+
def self.get_matching_regexps
|
20
20
|
return [
|
21
21
|
/^data:image.*$/
|
22
22
|
]
|
@@ -24,13 +24,13 @@ module RUtilAnts
|
|
24
24
|
|
25
25
|
# Constructor
|
26
26
|
#
|
27
|
-
# Parameters
|
27
|
+
# Parameters::
|
28
28
|
# * *iURL* (_String_): The URL that this handler will manage
|
29
29
|
def initialize(iURL)
|
30
30
|
@URL = iURL
|
31
31
|
lMatchData = @URL.match(/data:image\/(.*);base64,(.*)/)
|
32
32
|
if (lMatchData == nil)
|
33
|
-
|
33
|
+
log_bug "URL #{iURL[0..23]}... was identified as a data:image like, but it appears to be false."
|
34
34
|
else
|
35
35
|
@Ext = lMatchData[1]
|
36
36
|
if (@Ext == 'x-icon')
|
@@ -42,17 +42,17 @@ module RUtilAnts
|
|
42
42
|
|
43
43
|
# Get the server ID
|
44
44
|
#
|
45
|
-
# Return
|
45
|
+
# Return::
|
46
46
|
# * _String_: The server ID
|
47
|
-
def
|
47
|
+
def get_server_id
|
48
48
|
return nil
|
49
49
|
end
|
50
50
|
|
51
51
|
# Get the current CRC of the URL
|
52
52
|
#
|
53
|
-
# Return
|
53
|
+
# Return::
|
54
54
|
# * _Integer_: The CRC
|
55
|
-
def
|
55
|
+
def get_crc
|
56
56
|
# As the content is in the URL, it will be natural to not find it anymore in the cache when it is changed.
|
57
57
|
# Therefore there is no need to return a CRC.
|
58
58
|
return 0
|
@@ -61,25 +61,25 @@ module RUtilAnts
|
|
61
61
|
# Get a corresponding file base name.
|
62
62
|
# This method has to make sure file extensions are respected, as it can be used for further processing.
|
63
63
|
#
|
64
|
-
# Return
|
64
|
+
# Return::
|
65
65
|
# * _String_: The file name
|
66
|
-
def
|
66
|
+
def get_corresponding_file_base_name
|
67
67
|
return "DataImage.#{@Ext}"
|
68
68
|
end
|
69
69
|
|
70
70
|
# Get the content of the URL
|
71
71
|
#
|
72
|
-
# Parameters
|
72
|
+
# Parameters::
|
73
73
|
# * *iFollowRedirections* (_Boolean_): Do we follow redirections while accessing the content ?
|
74
|
-
# Return
|
74
|
+
# Return::
|
75
75
|
# * _Integer_: Type of content returned
|
76
76
|
# * _Object_: The content, depending on the type previously returned:
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
def
|
77
|
+
# * _Exception_ if CONTENT_ERROR: The corresponding error
|
78
|
+
# * _String_ if CONTENT_REDIRECT: The new URL
|
79
|
+
# * _String_ if CONTENT_STRING: The real content
|
80
|
+
# * _String_ if CONTENT_LOCALFILENAME: The name of the local file name storing the content
|
81
|
+
# * _String_ if CONTENT_LOCALFILENAME_TEMPORARY: The name of the temporary local file name storing the content
|
82
|
+
def get_content(iFollowRedirections)
|
83
83
|
rContentFormat = nil
|
84
84
|
rContent = nil
|
85
85
|
|