sendl 0.0.5 → 0.0.6
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/CHANGELOG +4 -0
- data/bin/sendcat +32 -18
- data/lib/sendl/file.rb +5 -8
- data/lib/sendl/uploader.rb +7 -3
- data/lib/sendl/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG
CHANGED
data/bin/sendcat
CHANGED
@@ -60,19 +60,22 @@ Sending files with Sendcat
|
|
60
60
|
|
61
61
|
The simplest way is sending one file:
|
62
62
|
|
63
|
-
$ sendcat
|
63
|
+
$ sendcat somefile
|
64
|
+
https://sendc.at/dl/Jqd2ICj5jqkKhpUxkqSJRJLpzRNRFhJUjGqBd6az1v0NEsWKIwIDtpf
|
65
|
+
somefile: 100% |========================| 377B 1.2KB/s ETA: 00:00:00
|
66
|
+
Files shared successfully (>'.'<)
|
64
67
|
|
65
|
-
You can
|
68
|
+
You can then grab the link and send it to someone. You can make it even easier by specifying an email address:
|
66
69
|
|
67
|
-
$ sendcat bob@dingo.com
|
70
|
+
$ sendcat somefile bob@dingo.com
|
68
71
|
|
69
|
-
You can
|
72
|
+
Sendcat will upload the file and send an email to bob@dingo.com with a link to download the file. You can also send multiple files and/or people at once:
|
70
73
|
|
71
|
-
$ sendcat
|
74
|
+
$ sendcat bob@dingo.com alice@bob.com somefile otherfile
|
72
75
|
|
73
|
-
You can
|
76
|
+
You can use wildcards, also order of arguments doesn't matter:
|
74
77
|
|
75
|
-
$ sendcat
|
78
|
+
$ sendcat * bob@dingo.com
|
76
79
|
|
77
80
|
You can add a message:
|
78
81
|
|
@@ -86,6 +89,10 @@ Sendcat will dump the URL out to stdout, so to easily copy it to your clipboard
|
|
86
89
|
|
87
90
|
$ sendcat file1 file2 bob@dingo.com alice@bob.com -m "Sendcat is awesome" | pbcopy
|
88
91
|
|
92
|
+
You don't need to specify an email address if you are going to handle the share link yourself:
|
93
|
+
|
94
|
+
$ sendcat somefile
|
95
|
+
|
89
96
|
You can send files to anyone, they don't need an account at sendcat.com. The recipient will receive an email with download instructions for the file.
|
90
97
|
|
91
98
|
EOS
|
@@ -106,13 +113,6 @@ recipients = ARGV.grep(email_regex)
|
|
106
113
|
# copycat getopt behavior and modify ARGV
|
107
114
|
recipients.each{|r| ARGV.delete(r)}
|
108
115
|
|
109
|
-
# anything left in ARGV should be a file
|
110
|
-
ARGV.each do |f|
|
111
|
-
files << Sendl::File.new(f)
|
112
|
-
end
|
113
|
-
|
114
|
-
# debugging
|
115
|
-
|
116
116
|
# should handle:
|
117
117
|
# sendl sudara@alonetone.com file
|
118
118
|
# sendl sudara@alonetone.com will@will_j.net file
|
@@ -120,11 +120,25 @@ end
|
|
120
120
|
# sendl -t sudara@alonetone.com -t will@will_j.net -f file1 -f file2
|
121
121
|
# sendl -t sudara@alonetone.com -t will@will_j.net file1 file2
|
122
122
|
|
123
|
-
# puts recipients.inspect
|
124
|
-
# puts files.inspect
|
125
|
-
|
126
123
|
if not STDIN.tty?
|
127
|
-
|
124
|
+
# Buffer STDIN to a temp file.
|
125
|
+
stdin_tmpfile = Tempfile.new 'sendcat'
|
126
|
+
|
127
|
+
at_exit do
|
128
|
+
stdin_tmpfile.unlink
|
129
|
+
end
|
130
|
+
|
131
|
+
while data = STDIN.read(10_000)
|
132
|
+
stdin_tmpfile.write(data)
|
133
|
+
end
|
134
|
+
stdin_tmpfile.close
|
135
|
+
|
136
|
+
files << Sendl::File.new(stdin_tmpfile.path, (opts[:filename] || "STDIN"))
|
137
|
+
end
|
138
|
+
|
139
|
+
# anything left in ARGV should be a file
|
140
|
+
ARGV.each do |f|
|
141
|
+
files << Sendl::File.new(f)
|
128
142
|
end
|
129
143
|
|
130
144
|
if files.empty?
|
data/lib/sendl/file.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
module Sendl
|
2
2
|
class File
|
3
|
-
attr_reader :filename
|
4
|
-
attr_reader :size
|
3
|
+
attr_reader :filename, :size, :desired_name
|
5
4
|
|
6
|
-
def initialize(
|
7
|
-
@
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
def upload!(share_id)
|
5
|
+
def initialize(file, override_name = nil)
|
6
|
+
@desired_name = ::File.basename(override_name || file)
|
7
|
+
@filename = file
|
8
|
+
@size = ::File.size(file)
|
12
9
|
end
|
13
10
|
|
14
11
|
def sha512
|
data/lib/sendl/uploader.rb
CHANGED
@@ -46,7 +46,9 @@ module Sendl
|
|
46
46
|
|
47
47
|
def upload_file(f)
|
48
48
|
debug("Uploading #{f.filename}")
|
49
|
+
|
49
50
|
mime_type = MIME::Types.type_for(f.filename).first || 'application/octet-stream'
|
51
|
+
|
50
52
|
debug("Determined MIME Type of #{mime_type}")
|
51
53
|
debug("Uploading by sha")
|
52
54
|
r = Curl::Easy.new(url_for("shares/#{@share_id}/share_files.json")) do |curl|
|
@@ -56,12 +58,14 @@ module Sendl
|
|
56
58
|
file_share_id = parse_json(r.body_str)["share_file"]["id"]
|
57
59
|
|
58
60
|
if r.response_code == 201
|
59
|
-
STDERR.puts "#{::File.basename(f.
|
61
|
+
STDERR.puts "#{::File.basename(f.desired_name)} was already uploaded, skipping"
|
60
62
|
elsif r.response_code == 202
|
61
63
|
debug("Server requests the full file contents")
|
62
|
-
|
64
|
+
|
65
|
+
progress = ProgressBar.new(f.desired_name, f.size)
|
63
66
|
progress.file_transfer_mode
|
64
67
|
progress.bar_mark = "="
|
68
|
+
|
65
69
|
r = Curl::Easy.new(url_for("shares/#{@share_id}/share_files/#{file_share_id}.json")) do |curl|
|
66
70
|
curl.multipart_form_post = true
|
67
71
|
curl.on_progress do |dl_total, dl_now, ul_total, ul_now| # callback
|
@@ -69,7 +73,7 @@ module Sendl
|
|
69
73
|
progress.set(current)
|
70
74
|
true
|
71
75
|
end
|
72
|
-
curl.http_post Curl::PostField.content("auth_token", api_key), Curl::PostField.content("_method", "PUT"), Curl::PostField.file("file_data[data]", f.filename)
|
76
|
+
curl.http_post Curl::PostField.content("auth_token", api_key), Curl::PostField.content("_method", "PUT"), Curl::PostField.file("file_data[data]", f.filename, f.desired_name)
|
73
77
|
end
|
74
78
|
STDERR.puts
|
75
79
|
else
|
data/lib/sendl/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: sendl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Will Jessop
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-13 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: getopt
|