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.
- checksums.yaml +4 -4
- data/lib/transfer.rb +20 -13
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 95f229e032bfcea704ff94163aaa77dcd170bea32156c861e5460d79edf172f2
|
|
4
|
+
data.tar.gz: 718449a1a455523865e4dc14337a10f2f45417e08a79e6cf7428e7d8e44d5515
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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(
|
|
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 +=
|
|
90
|
+
data += recv_part(data, data_length)
|
|
83
91
|
sleep(0.01)
|
|
84
|
-
|
|
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
|
-
"
|
|
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.
|
|
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-
|
|
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.
|