simple-transfer 1.0.3 → 1.1.4

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/transfer.rb +20 -13
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd38b47a3855979f50b757774ce88ce52b39e96525a59bd528e65c77355bcf7d
4
- data.tar.gz: c8bcacadd245c1fa8e1bce54179056bf30bcda308a8a9f3aac67498c7eaa0e9f
3
+ metadata.gz: 95f229e032bfcea704ff94163aaa77dcd170bea32156c861e5460d79edf172f2
4
+ data.tar.gz: 718449a1a455523865e4dc14337a10f2f45417e08a79e6cf7428e7d8e44d5515
5
5
  SHA512:
6
- metadata.gz: 34c88b24d77957012e13dc5ff2862adece0921fe39742184330e86e77ee015f581067194614abf41413b57c84b0aae1f0a3b77d1600ab33cdc71275be4b1cd8e
7
- data.tar.gz: 278b458c78d0c459beda200f201bfd81188522e6b7b441449ce7128376cd56876177d4ca3a1aca56275396191e0010940ccfaa85c807d609a9cd38255455ef07
6
+ metadata.gz: fa6f71d1d2fbf421c3dc24ae1268353b616c3bc3bd2464a09b06088fe42ac606b843a73dfd0a4ecda0fe84a0d46b0ffc6995a3be8bd90d098023ebf31bc1299b
7
+ data.tar.gz: 8a39c6aa350b2f5d5d99ea33e0c3c1823618034476ab1c64e2fdc5090095b440b7da0c8e3da6c3bb44f532c180070513a383dcac05c600ac7ad465bc4f2d08b5
data/lib/transfer.rb CHANGED
@@ -3,17 +3,15 @@ require "fileutils"
3
3
  require "time"
4
4
 
5
5
  module SimpleTransfer
6
+
7
+ @dot_cycle = ['⣾','⣽','⣻','⢿','⡿','⣟','⣯','⣷']
8
+
6
9
  def log_transfer(message, level = "INFO")
7
10
  Kernel.puts "[#{level}] [%s] #{message}" % Time.now.utc.iso8601
8
11
  end
9
12
 
10
- def progress_bar(download, length)
11
- i = (download.to_f / length.to_f * 30).to_i
12
- return "[" + "❚" * i + " " * (30 - i) + "]"
13
- end
14
-
15
13
  def log_progress(downloaded, length, filename)
16
- Kernel.print "\r[TRANSFER!] Downloading #{filename}... #{downloaded}/#{length} bytes"
14
+ return "\r[TRANSFER!] Downloading #{filename}... #{downloaded}/#{length} bytes"
17
15
  end
18
16
 
19
17
  class Server < TCPServer
@@ -22,14 +20,15 @@ module SimpleTransfer
22
20
  def initialize(*args)
23
21
  super(*args)
24
22
  @logging = true
23
+ @dot_cycle = SimpleTransfer.instance_variable_get(:@dot_cycle)
25
24
  end
26
25
 
27
26
  def port()
28
27
  return self.addr[1]
29
28
  end
30
29
 
31
- def recv_chunk()
32
- return @conn.recv(@@recv_size)
30
+ def recv_chunk(size=@@recv_size)
31
+ return @conn.recv(size)
33
32
  end
34
33
 
35
34
  def init_transfer()
@@ -71,7 +70,16 @@ module SimpleTransfer
71
70
  return init_data
72
71
  end
73
72
 
73
+ def recv_part(data, data_length)
74
+ # no need to end sync, just check if exactly the file size is read at total
75
+ remaining = data_length - data.length
76
+ part = remaining < @@recv_size ? recv_chunk(remaining) : recv_chunk()
77
+ return part
78
+ #
79
+ end
80
+
74
81
  def recv_file()
82
+ fk = 0
75
83
  init = handle_init()
76
84
  if not init[0]
77
85
  return init[1]
@@ -79,14 +87,15 @@ module SimpleTransfer
79
87
  data_length, filename = init
80
88
  data = ""
81
89
  while data.length < data_length
82
- data += recv_chunk()
90
+ data += recv_part(data, data_length)
83
91
  sleep(0.01)
84
- log_progress(data.length, data_length, filename) if @logging
92
+ fk = (fk + 1) % @dot_cycle.length
93
+ Kernel.print log_progress(data.length, data_length, filename) + @dot_cycle[fk]
85
94
  end
86
95
  Kernel.print "\n"
87
96
  if data.length != data_length
88
97
  log_transfer(
89
- "partial data received for #{filename}", level = "WARNING"
98
+ "more or less data received for #{filename}", level = "WARNING"
90
99
  ) if @logging
91
100
  end
92
101
  return data, filename
@@ -185,8 +194,6 @@ module SimpleTransfer
185
194
 
186
195
  def send_directory(directory)
187
196
  scan_directory(directory).each do |f|
188
- #sleep because there is no sync for end of transfer
189
- sleep 0.5
190
197
  if File.directory?(f)
191
198
  send_directory(f)
192
199
  else send_file(f) end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-transfer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burzum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-24 00:00:00.000000000 Z
11
+ date: 2025-09-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  An extremely simple gem that relies on the TCP stack for transfer of files over a IP network.