mongrel_download_progress 0.1
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/COPYING +1 -0
- data/LICENSE +1 -0
- data/README +5 -0
- data/Rakefile +38 -0
- data/lib/mongrel_download_progress/init.rb +64 -0
- data/resources/defaults.yaml +2 -0
- data/tools/rakehelp.rb +106 -0
- metadata +70 -0
data/COPYING
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
No copying restrictions/license given.
|
data/LICENSE
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
No license given.
|
data/README
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
require 'rake/rdoctask'
|
6
|
+
require 'tools/rakehelp'
|
7
|
+
require 'fileutils'
|
8
|
+
include FileUtils
|
9
|
+
|
10
|
+
setup_tests
|
11
|
+
setup_clean ["pkg", "lib/*.bundle", "*.gem", ".config"]
|
12
|
+
|
13
|
+
setup_rdoc ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
|
14
|
+
|
15
|
+
desc "Does a full compile, test run"
|
16
|
+
task :default => [:test, :package]
|
17
|
+
|
18
|
+
version="0.1"
|
19
|
+
name="mongrel_download_progress"
|
20
|
+
|
21
|
+
setup_gem(name, version) do |spec|
|
22
|
+
spec.summary = "The mongrel_download_progress GemPlugin"
|
23
|
+
spec.description = spec.summary
|
24
|
+
spec.author="Jameson Watts"
|
25
|
+
spec.add_dependency('gem_plugin', '>= 0.2.2')
|
26
|
+
spec.add_dependency('mongrel', '>= 0.3.10') ## add this
|
27
|
+
spec.files += Dir.glob("resources/**/*")
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
task :install => [:test, :package] do
|
32
|
+
sh %{sudo gem install pkg/#{name}-#{version}.gem}
|
33
|
+
end
|
34
|
+
|
35
|
+
task :uninstall => [:clean] do
|
36
|
+
sh %{sudo gem uninstall #{name}}
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'gem_plugin'
|
2
|
+
require 'mongrel'
|
3
|
+
class DownloadProgress < GemPlugin::Plugin "/handlers"
|
4
|
+
include Mongrel::HttpHandlerPlugin
|
5
|
+
|
6
|
+
def process(request, response)
|
7
|
+
|
8
|
+
query = Mongrel::HttpRequest.query_parse(request.params['QUERY_STRING'])
|
9
|
+
|
10
|
+
STDERR.puts "Sending file"
|
11
|
+
send_file(response, File.expand_path("." + query['path']), query)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
# Sends the contents of a file back to the user.
|
16
|
+
def send_file(response, path, query)
|
17
|
+
file_status = File.stat(path)
|
18
|
+
|
19
|
+
response.status = 200
|
20
|
+
# Set the last modified times as well and etag for all files
|
21
|
+
response.header[Mongrel::Const::LAST_MODIFIED] = file_status.mtime.httpdate
|
22
|
+
# Calculated the same as apache, not sure how well the works on win32
|
23
|
+
response.header[Mongrel::Const::ETAG] = Mongrel::Const::ETAG_FORMAT % [file_status.mtime.to_i, file_status.size, file_status.ino]
|
24
|
+
|
25
|
+
response.header[Mongrel::Const::CONTENT_TYPE] = query['type'].nil? ? @default_content_type : "#{query['type']}"
|
26
|
+
response.header['Content-Disposition'] = (query['disposition'].nil? ? "Inline" : "#{query['disposition']};") + " filename=\"" + (query['filename'].nil? ? File.basename(path) : query['filename']) + "\""
|
27
|
+
|
28
|
+
# send a status with out content length
|
29
|
+
response.send_status(file_status.size)
|
30
|
+
response.send_header
|
31
|
+
|
32
|
+
size = File.size(path)
|
33
|
+
len = 4096
|
34
|
+
sent = 0
|
35
|
+
left = size
|
36
|
+
File.open(path, 'rb') do |file|
|
37
|
+
while buf = file.read(len)
|
38
|
+
response.write(buf)
|
39
|
+
left -= len
|
40
|
+
sent += len
|
41
|
+
STDERR.print "\r"+sprintf("%.#{0}f", (sent.to_f / size.to_f)*100)+" %"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
STDERR.puts ""
|
46
|
+
STDERR.puts "Sent file"
|
47
|
+
|
48
|
+
send_trigger(query['trigger_host'], query['trigger_port'], query['trigger_path']) if(query['trigger_host'] && query['trigger_path'])
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
#executes the trigger
|
53
|
+
def send_trigger(host, port, path)
|
54
|
+
for i in 0..2
|
55
|
+
http = Net::HTTP.new(host,(port.nil? ? 80 : port))
|
56
|
+
req = Net::HTTP::Get.new(path)
|
57
|
+
|
58
|
+
response = http.request(req)
|
59
|
+
|
60
|
+
STDERR.puts response.message
|
61
|
+
break if response.message == 'OK'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/tools/rakehelp.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
|
2
|
+
def make(makedir)
|
3
|
+
Dir.chdir(makedir) do
|
4
|
+
sh(PLATFORM =~ /win32/ ? 'nmake' : 'make')
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
def extconf(dir)
|
10
|
+
Dir.chdir(dir) do ruby "extconf.rb" end
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def setup_tests
|
15
|
+
Rake::TestTask.new do |t|
|
16
|
+
t.libs << "test"
|
17
|
+
t.test_files = FileList['test/test*.rb']
|
18
|
+
t.verbose = true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def setup_clean otherfiles
|
24
|
+
files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles
|
25
|
+
CLEAN.include(files)
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
def setup_rdoc files
|
30
|
+
Rake::RDocTask.new do |rdoc|
|
31
|
+
rdoc.rdoc_dir = 'doc/rdoc'
|
32
|
+
rdoc.options << '--line-numbers'
|
33
|
+
rdoc.rdoc_files.add(files)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def setup_extension(dir, extension)
|
39
|
+
ext = "ext/#{dir}"
|
40
|
+
ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
|
41
|
+
ext_files = FileList[
|
42
|
+
"#{ext}/*.c",
|
43
|
+
"#{ext}/*.h",
|
44
|
+
"#{ext}/extconf.rb",
|
45
|
+
"#{ext}/Makefile",
|
46
|
+
"lib"
|
47
|
+
]
|
48
|
+
|
49
|
+
task "lib" do
|
50
|
+
directory "lib"
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "Builds just the #{extension} extension"
|
54
|
+
task extension.to_sym => ["#{ext}/Makefile", ext_so ]
|
55
|
+
|
56
|
+
file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
|
57
|
+
extconf "#{ext}"
|
58
|
+
end
|
59
|
+
|
60
|
+
file ext_so => ext_files do
|
61
|
+
make "#{ext}"
|
62
|
+
cp ext_so, "lib"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def base_gem_spec(pkg_name, pkg_version)
|
68
|
+
pkg_version = pkg_version
|
69
|
+
pkg_name = pkg_name
|
70
|
+
pkg_file_name = "#{pkg_name}-#{pkg_version}"
|
71
|
+
Gem::Specification.new do |s|
|
72
|
+
s.name = pkg_name
|
73
|
+
s.version = pkg_version
|
74
|
+
s.platform = Gem::Platform::RUBY
|
75
|
+
s.has_rdoc = true
|
76
|
+
s.extra_rdoc_files = [ "README" ]
|
77
|
+
|
78
|
+
s.files = %w(COPYING LICENSE README Rakefile) +
|
79
|
+
Dir.glob("{bin,doc/rdoc,test,lib}/**/*") +
|
80
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
81
|
+
Dir.glob("examples/**/*.rb") +
|
82
|
+
Dir.glob("tools/*.rb")
|
83
|
+
|
84
|
+
s.require_path = "lib"
|
85
|
+
s.extensions = FileList["ext/**/extconf.rb"].to_a
|
86
|
+
s.bindir = "bin"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def setup_gem(pkg_name, pkg_version)
|
91
|
+
spec = base_gem_spec(pkg_name, pkg_version)
|
92
|
+
yield spec if block_given?
|
93
|
+
|
94
|
+
Rake::GemPackageTask.new(spec) do |p|
|
95
|
+
p.gem_spec = spec
|
96
|
+
# win32 chokes on this
|
97
|
+
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def setup_win32_gem(pkg_name, pkg_version)
|
102
|
+
spec = base_gem_spec(pkg_name, pkg_version)
|
103
|
+
yield spec if block_given?
|
104
|
+
|
105
|
+
Gem::Builder.new(spec).build
|
106
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: mongrel_download_progress
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: "0.1"
|
7
|
+
date: 2007-07-08 00:00:00 -06:00
|
8
|
+
summary: The mongrel_download_progress GemPlugin
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email:
|
12
|
+
homepage:
|
13
|
+
rubyforge_project:
|
14
|
+
description: The mongrel_download_progress GemPlugin
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Jameson Watts
|
31
|
+
files:
|
32
|
+
- COPYING
|
33
|
+
- LICENSE
|
34
|
+
- README
|
35
|
+
- Rakefile
|
36
|
+
- lib/mongrel_download_progress
|
37
|
+
- lib/mongrel_download_progress/init.rb
|
38
|
+
- tools/rakehelp.rb
|
39
|
+
- resources/defaults.yaml
|
40
|
+
test_files: []
|
41
|
+
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
extra_rdoc_files:
|
45
|
+
- README
|
46
|
+
executables: []
|
47
|
+
|
48
|
+
extensions: []
|
49
|
+
|
50
|
+
requirements: []
|
51
|
+
|
52
|
+
dependencies:
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: gem_plugin
|
55
|
+
version_requirement:
|
56
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.2.2
|
61
|
+
version:
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: mongrel
|
64
|
+
version_requirement:
|
65
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.3.10
|
70
|
+
version:
|