concord_cacher 0.1.10 → 0.1.11
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.tar.gz.sig +0 -0
- data/Rakefile +0 -13
- data/concord_cacher.gemspec +2 -2
- data/lib/concord/cacher.rb +7 -2
- data/lib/concord/resource.rb +20 -1
- data/spec/diy_local_cacher_spec.rb +34 -0
- metadata +6 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
|
Binary file
|
data/Rakefile
CHANGED
|
@@ -5,19 +5,6 @@ require 'spec/rake/spectask'
|
|
|
5
5
|
|
|
6
6
|
require './lib/concord_cacher.rb'
|
|
7
7
|
|
|
8
|
-
require 'echoe'
|
|
9
|
-
Echoe.new('concord_cacher', '0.1.10') do |p|
|
|
10
|
-
p.description = "concord_cacher provides support for locally caching a resource and all referenced resources in multiple different ways. It is intended for using with other Concord Consortium projects and not necessarily for outside projects."
|
|
11
|
-
p.summary = "Support for locally caching a resource and all referenced resources in multiple different ways"
|
|
12
|
-
p.url = "http://github.com/psndcsrv/concord_cacher"
|
|
13
|
-
p.author = "Aaron Unger"
|
|
14
|
-
p.email = "aunger @nospam@ concord.org"
|
|
15
|
-
p.ignore_pattern = ["tmp/*","pkg/*","hudson/*"]
|
|
16
|
-
p.development_dependencies = []
|
|
17
|
-
p.runtime_dependencies = []
|
|
18
|
-
p.clean_pattern = ["hudson/*", "tmp/*"]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
8
|
task :default => :spec
|
|
22
9
|
|
|
23
10
|
Spec::Rake::SpecTask.new do |t|
|
data/concord_cacher.gemspec
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{concord_cacher}
|
|
5
|
-
s.version = "0.1.
|
|
5
|
+
s.version = "0.1.11"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Aaron Unger"]
|
|
9
9
|
s.cert_chain = ["/Users/aunger/gem-public_cert.pem"]
|
|
10
|
-
s.date = %q{2010-
|
|
10
|
+
s.date = %q{2010-09-07}
|
|
11
11
|
s.description = %q{concord_cacher provides support for locally caching a resource and all referenced resources in multiple different ways. It is intended for using with other Concord Consortium projects and not necessarily for outside projects.}
|
|
12
12
|
s.email = %q{aunger @nospam@ concord.org}
|
|
13
13
|
s.extra_rdoc_files = ["README.textile", "lib/concord/cacher.rb", "lib/concord/diy_local_cacher.rb", "lib/concord/filename_generators.rb", "lib/concord/filename_generators/default_generator.rb", "lib/concord/filename_generators/diy_generator.rb", "lib/concord/filename_generators/java_proxy_generator.rb", "lib/concord/helper.rb", "lib/concord/java_proxy_cacher.rb", "lib/concord/resource.rb", "lib/concord_cacher.rb"]
|
data/lib/concord/cacher.rb
CHANGED
|
@@ -16,10 +16,15 @@ class ::Concord::Cacher
|
|
|
16
16
|
::Concord::Resource.debug = opts.delete(:debug) || false
|
|
17
17
|
|
|
18
18
|
create_map = opts.delete(:create_map)
|
|
19
|
-
::Concord::Resource.create_map = create_map unless create_map
|
|
19
|
+
::Concord::Resource.create_map = create_map unless create_map.nil?
|
|
20
20
|
|
|
21
21
|
cache_headers = opts.delete(:cache_headers)
|
|
22
|
-
::Concord::Resource.cache_headers = cache_headers unless cache_headers
|
|
22
|
+
::Concord::Resource.cache_headers = cache_headers unless cache_headers.nil?
|
|
23
|
+
|
|
24
|
+
relative_hosts = opts.delete(:relative)
|
|
25
|
+
relative_hosts = [] if relative_hosts.nil?
|
|
26
|
+
relative_hosts = [relative_hosts] unless relative_hosts.kind_of? Array
|
|
27
|
+
::Concord::Resource.relative_hosts = relative_hosts
|
|
23
28
|
|
|
24
29
|
@main_resource = Concord::Resource.new
|
|
25
30
|
@main_resource.url = opts.delete(:url)
|
data/lib/concord/resource.rb
CHANGED
|
@@ -54,6 +54,7 @@ class ::Concord::Resource
|
|
|
54
54
|
@errors = {}
|
|
55
55
|
@cacher = nil
|
|
56
56
|
@filename_generator = ::Concord::FilenameGenerators::DefaultGenerator
|
|
57
|
+
@relative_hosts = []
|
|
57
58
|
class << self
|
|
58
59
|
attr_accessor :debug
|
|
59
60
|
attr_accessor :verbose
|
|
@@ -64,6 +65,7 @@ class ::Concord::Resource
|
|
|
64
65
|
attr_reader :errors
|
|
65
66
|
attr_accessor :cacher
|
|
66
67
|
attr_accessor :filename_generator
|
|
68
|
+
attr_accessor :relative_hosts
|
|
67
69
|
end
|
|
68
70
|
|
|
69
71
|
def self.map(k,v)
|
|
@@ -160,7 +162,14 @@ class ::Concord::Resource
|
|
|
160
162
|
|
|
161
163
|
def local_filename
|
|
162
164
|
return @local_filename if @local_filename
|
|
163
|
-
|
|
165
|
+
if (self.relativize_only?)
|
|
166
|
+
@local_filename = self.uri.path
|
|
167
|
+
@local_filename << "?#{self.uri.query}" if self.uri.query
|
|
168
|
+
@local_filename << "##{self.uri.fragment}" if self.uri.fragment
|
|
169
|
+
else
|
|
170
|
+
@local_filename = self.class.filename_generator.generate_filename(self)
|
|
171
|
+
end
|
|
172
|
+
return @local_filename
|
|
164
173
|
end
|
|
165
174
|
|
|
166
175
|
def recursable?
|
|
@@ -172,6 +181,11 @@ class ::Concord::Resource
|
|
|
172
181
|
return false
|
|
173
182
|
end
|
|
174
183
|
|
|
184
|
+
def relativize_only?
|
|
185
|
+
return true if ::Concord::Resource.relative_hosts.include?(self.uri.host.to_s)
|
|
186
|
+
return false
|
|
187
|
+
end
|
|
188
|
+
|
|
175
189
|
private
|
|
176
190
|
|
|
177
191
|
def _line_matches(line)
|
|
@@ -221,6 +235,11 @@ class ::Concord::Resource
|
|
|
221
235
|
_try(resource, lambda {
|
|
222
236
|
resource.load
|
|
223
237
|
})
|
|
238
|
+
|
|
239
|
+
if resource.relativize_only?
|
|
240
|
+
print 'r' if self.class.verbose
|
|
241
|
+
return
|
|
242
|
+
end
|
|
224
243
|
|
|
225
244
|
# skip downloading already existing files.
|
|
226
245
|
# because we're working with sha1 hashes we can be reasonably certain the content is a complete match
|
|
@@ -101,6 +101,16 @@ describe 'DIY Local Cacher' do
|
|
|
101
101
|
file_content.should match(filename_for('http://portal.concord.org/images/icons/delete.png'))
|
|
102
102
|
file_content.should match(filename_for('https://mail.google.com/mail/images/2/5/mountains/base/gmail_solid_white.png'))
|
|
103
103
|
end
|
|
104
|
+
|
|
105
|
+
it 'should make some urls relative' do
|
|
106
|
+
cache('standard_uri.otml', :activity => mockup('standard_uri.otml'), :relative => ['portal.concord.org'])
|
|
107
|
+
|
|
108
|
+
file_content = File.read(File.join(@cache,'hash.otml'))
|
|
109
|
+
|
|
110
|
+
file_content.should_not match(/http:/)
|
|
111
|
+
file_content.should match('/images/icons/delete.png')
|
|
112
|
+
file_content.should match(filename_for('https://mail.google.com/mail/images/2/5/mountains/base/gmail_solid_white.png'))
|
|
113
|
+
end
|
|
104
114
|
end
|
|
105
115
|
|
|
106
116
|
describe 'element references syntax' do
|
|
@@ -239,6 +249,18 @@ describe 'DIY Local Cacher' do
|
|
|
239
249
|
exists?(f)
|
|
240
250
|
end
|
|
241
251
|
end
|
|
252
|
+
|
|
253
|
+
it 'should not recurse relativized urls' do
|
|
254
|
+
unexpected_files = []
|
|
255
|
+
unexpected_files << filename_for('http://otrunk.concord.org/examples/LOOPS/models/statesofmatter/statesOfMatterPage1.cml')
|
|
256
|
+
unexpected_files << filename_for('http://otrunk.concord.org/examples/LOOPS/models/statesofmatter/statesOfMatterPage1$0.mml')
|
|
257
|
+
|
|
258
|
+
cache('mw_model_absolute.otml', :activity => mockup('mw_model_absolute.otml'), :relative => ['otrunk.concord.org'])
|
|
259
|
+
|
|
260
|
+
unexpected_files.each do |f|
|
|
261
|
+
does_not_exist?(f)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
242
264
|
end
|
|
243
265
|
|
|
244
266
|
describe 'embedded nlogo files' do
|
|
@@ -337,5 +359,17 @@ describe 'DIY Local Cacher' do
|
|
|
337
359
|
|
|
338
360
|
file_content.should match(Regexp.new("<OTText text=\"<img src="#{filename_for("http://portal.concord.org/images/icons/chart_line.png")}" />\" />"))
|
|
339
361
|
end
|
|
362
|
+
|
|
363
|
+
it 'should not cause problems to specify one relative host as a string instead of an array' do
|
|
364
|
+
unexpected_files = []
|
|
365
|
+
unexpected_files << filename_for('http://otrunk.concord.org/examples/LOOPS/models/statesofmatter/statesOfMatterPage1.cml')
|
|
366
|
+
unexpected_files << filename_for('http://otrunk.concord.org/examples/LOOPS/models/statesofmatter/statesOfMatterPage1$0.mml')
|
|
367
|
+
|
|
368
|
+
cache('mw_model_absolute.otml', :activity => mockup('mw_model_absolute.otml'), :relative => 'otrunk.concord.org')
|
|
369
|
+
|
|
370
|
+
unexpected_files.each do |f|
|
|
371
|
+
does_not_exist?(f)
|
|
372
|
+
end
|
|
373
|
+
end
|
|
340
374
|
end
|
|
341
375
|
end
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 0.1.
|
|
8
|
+
- 11
|
|
9
|
+
version: 0.1.11
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Aaron Unger
|
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
|
35
35
|
8kT2T2VF
|
|
36
36
|
-----END CERTIFICATE-----
|
|
37
37
|
|
|
38
|
-
date: 2010-
|
|
38
|
+
date: 2010-09-07 00:00:00 -04:00
|
|
39
39
|
default_executable:
|
|
40
40
|
dependencies: []
|
|
41
41
|
|
|
@@ -151,6 +151,7 @@ rdoc_options:
|
|
|
151
151
|
require_paths:
|
|
152
152
|
- lib
|
|
153
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
154
|
+
none: false
|
|
154
155
|
requirements:
|
|
155
156
|
- - ">="
|
|
156
157
|
- !ruby/object:Gem::Version
|
|
@@ -158,6 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
158
159
|
- 0
|
|
159
160
|
version: "0"
|
|
160
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
|
+
none: false
|
|
161
163
|
requirements:
|
|
162
164
|
- - ">="
|
|
163
165
|
- !ruby/object:Gem::Version
|
|
@@ -168,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
168
170
|
requirements: []
|
|
169
171
|
|
|
170
172
|
rubyforge_project: concord_cacher
|
|
171
|
-
rubygems_version: 1.3.
|
|
173
|
+
rubygems_version: 1.3.7
|
|
172
174
|
signing_key:
|
|
173
175
|
specification_version: 3
|
|
174
176
|
summary: Support for locally caching a resource and all referenced resources in multiple different ways
|
metadata.gz.sig
CHANGED
|
Binary file
|