sendl 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|