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 ADDED
@@ -0,0 +1 @@
1
+ No copying restrictions/license given.
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ No license given.
data/README ADDED
@@ -0,0 +1,5 @@
1
+ == Mongrel_download_progress GemPlugin
2
+
3
+ You should document your project here.
4
+
5
+
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
@@ -0,0 +1,2 @@
1
+ ---
2
+ :debug: false
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: