zget 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a831b06d7c4da66c9b0632b5110bc6031754ac1
4
- data.tar.gz: 69b1be9ef5e06e7f5651cc7c8d9c5aa01e9ae5c1
3
+ metadata.gz: f8412a5e29c87313f3ca871dcea9e46a946e561f
4
+ data.tar.gz: 437166bd8f02d16a15ba06e2af78d9f527563fc2
5
5
  SHA512:
6
- metadata.gz: 690435177f2fa5d251e575cd71235dcf324abf71e0a970948161847443ed2c9964fbe5b8e6cff64918f0b5afd55a2188a77a5497e49f1e47b9bfe3383d49db77
7
- data.tar.gz: dcf962e64d9804c051207bf80fd34cc1c805f05370c46238e19ec040b7e2957184afd127a7d819f9165b40db2806fc6c4217ca2cd5c079755cfa59db14a5b0ff
6
+ metadata.gz: 3e0affe16488be33258b8e2c81631e616a95e56e64907905ffe851882acc8cd9080f9210fac450fe78041dcf597a716f09cf06a0a1576629c897a531c4a27d46
7
+ data.tar.gz: d93d7d9c3f2e7d87be00be6411d0c86450224f19d5d589886b06bd3184946586306f9bedda8810c11adfe4f21e91dcf6e04b11cacdfaa6b73eb53b316253d2c1
data/exe/zput CHANGED
File without changes
@@ -2,7 +2,15 @@ module Zget
2
2
  class Zget < Command
3
3
  attr_reader :file_or_alias, :output
4
4
 
5
+ CONTENT_LENGTH_PROC = ->(content_length) { @content_length = content_length }
6
+ PROGRESS_PROC = ->(size) do
7
+ percentage = size * 100 / @content_length
8
+ print "\rDownloading: #{percentage}%"
9
+ puts "\n" if percentage == 100
10
+ end
11
+
5
12
  def initialize(file_or_alias: nil, output: nil)
13
+ @content_length = 0
6
14
  @file_or_alias = file_or_alias
7
15
  @output = output
8
16
  end
@@ -25,7 +33,7 @@ module Zget
25
33
 
26
34
  unless service.nil?
27
35
  DNSSD.resolve! service do |r|
28
- open url(r) do |f|
36
+ open url(r), content_length_proc: CONTENT_LENGTH_PROC, progress_proc: PROGRESS_PROC do |f|
29
37
  filename = output || f.meta["content-disposition"].split(";").last.split("=").last
30
38
  File.write filename, f.read
31
39
  end
@@ -1,8 +1,25 @@
1
1
  module Zget
2
2
  # We want this server to shutdown as soon as the file is downloaded
3
3
  class FileHandler < WEBrick::HTTPServlet::DefaultFileHandler
4
- def do_GET(request, response)
5
- response["Content-Disposition"] = "inline; filename=#{File.basename @local_path}"
4
+ # We want to trick `Kernel::open` in order to display the upload progress.
5
+ # We do so by reading the file in chunks rather than the whole file.
6
+ # Why trick `Kernel::open`? See: https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L61
7
+ def open(path, mode)
8
+ st = File::stat(@local_path)
9
+ Kernel.open(path, mode) do |io|
10
+ data = ""
11
+ while d = io.read(1024 * 8)
12
+ data << d
13
+ percentage = data.size * 100 / st.size
14
+ print "\rUploading: #{percentage}%"
15
+ puts "\n" if percentage == 100
16
+ end
17
+ data
18
+ end
19
+ end
20
+
21
+ def do_GET(req, res)
22
+ res["Content-Disposition"] = "inline; filename=#{File.basename @local_path}"
6
23
  super
7
24
  @server.shutdown
8
25
  end
@@ -1,3 +1,3 @@
1
1
  module Zget
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Mac Adden
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-23 00:00:00.000000000 Z
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  requirements: []
116
116
  rubyforge_project:
117
- rubygems_version: 2.6.8
117
+ rubygems_version: 2.6.11
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Write a short summary, because Rubygems requires one.