jaxx 0.0.15 → 0.0.16
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 +8 -8
- data/lib/jaxx/cli.rb +1 -0
- data/lib/jaxx/process.rb +1 -1
- data/lib/jaxx/upload.rb +40 -10
- data/lib/jaxx/version.rb +1 -1
- data/spec/lib/jaxx/upload_spec.rb +38 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NWE4Njg1NTJkYjVlNzczODI4NDZiOWExZjRhMTQ5NDkyZjUzMWRjYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDI3NWMxNWJjODg5ZDk1MWIxNjBiNTExYTViZDRhOWQ4MjFmOTM4MA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjkxNmI3M2I0YTMzZWQzNDdhMjY4MzM5MzNlZmE3ZmY4NWIxODQ4MzFmNTdj
|
10
|
+
MWU2YjdjNGM3NmVhMmNjMjI3OGMzOTcwM2JkNjQ1NWNmZDkxNjk0NzAyMmNk
|
11
|
+
MDBkODExNzUzYzVkODI5YjQwZDRiNWRiOGZlN2ZiYTQ1OTY3N2I=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NWQ3ZmVmMmI4Y2FjYzJjZGVkOGQ5ZTEzOTZhN2JlNzhiYjJhZGUwOWExOTg0
|
14
|
+
MWE1NGQ5Yjc2NjUyZDRjZTc1YWFkN2U0NmZlMDU4YmU5MjE4NzhiMjExNGVk
|
15
|
+
OTgzOTJkOTZmY2MzY2UwMGEyYTVkNjQ1NWU3NDU5YjcyMmYzZGY=
|
data/lib/jaxx/cli.rb
CHANGED
@@ -31,6 +31,7 @@ module Jaxx
|
|
31
31
|
o.on('-f', '--file [FILE]') { |f| options['file'] = f }
|
32
32
|
o.on('-n', '--name [name]') { |f| options['filename'] = f }
|
33
33
|
o.on('-p', '--privacy [privacy]') { |p| options['privacy'] = p }
|
34
|
+
o.on('-r', '--retries [retries]') { |r| options['retries'] = r }
|
34
35
|
o.on('-h', '--help') { o }
|
35
36
|
end
|
36
37
|
end
|
data/lib/jaxx/process.rb
CHANGED
@@ -40,7 +40,7 @@ module Jaxx
|
|
40
40
|
|
41
41
|
["Unable to process transaction: ", format_errors(errs)].flatten.each do |msg|
|
42
42
|
Jaxx.logger.write msg
|
43
|
-
end and raise(RuntimeError) unless errs.empty?
|
43
|
+
end and raise(RuntimeError, errs.inspect) unless errs.empty?
|
44
44
|
|
45
45
|
block.call(storage)
|
46
46
|
end
|
data/lib/jaxx/upload.rb
CHANGED
@@ -4,11 +4,14 @@ require 'mime/types'
|
|
4
4
|
module Jaxx
|
5
5
|
class Upload
|
6
6
|
|
7
|
-
|
7
|
+
DEFAULT_RETRIES = 3
|
8
|
+
|
9
|
+
attr_reader :process, :retries
|
8
10
|
|
9
11
|
def initialize args = {}
|
10
|
-
@process
|
12
|
+
@process = Process.new(args.merge('validations' => [:privacy, :file_exists, :file_presence]))
|
11
13
|
@filename = args['filename']
|
14
|
+
@retries = args['retries'] || DEFAULT_RETRIES
|
12
15
|
end
|
13
16
|
|
14
17
|
def filename
|
@@ -27,18 +30,45 @@ module Jaxx
|
|
27
30
|
|
28
31
|
def execute
|
29
32
|
process.start do |storage|
|
30
|
-
|
31
|
-
directory ||= storage.directories.create(:key => process.bucket, :public => process.public?)
|
33
|
+
dir, attempts = remote_directory(storage), 0
|
32
34
|
|
33
35
|
files.each do |file, name|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
stat, exc = false, nil
|
37
|
+
attempts += 1
|
38
|
+
|
39
|
+
begin
|
40
|
+
stat = create_file dir, file, name
|
41
|
+
rescue => ex
|
42
|
+
exc = ex
|
43
|
+
end
|
44
|
+
|
45
|
+
if !stat and attempts >= self.retries
|
46
|
+
raise("File process failed: #{file}:#{name} : #{exc.message rescue nil}")
|
47
|
+
elsif !stat
|
48
|
+
redo
|
49
|
+
end
|
50
|
+
|
51
|
+
attempts = 0
|
40
52
|
end
|
41
53
|
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def remote_directory storage
|
60
|
+
dir = storage.directories.get(process.bucket)
|
61
|
+
dir ||= storage.directories.create(:key => process.bucket, :public => process.public?)
|
62
|
+
dir
|
63
|
+
end
|
64
|
+
|
65
|
+
def create_file dir, file, name
|
66
|
+
dir.files.create(
|
67
|
+
:key => name || file,
|
68
|
+
:body => File.read(file),
|
69
|
+
:public => process.public?,
|
70
|
+
:content_type => MIME::Types.type_for(file).last
|
71
|
+
)
|
42
72
|
end
|
43
73
|
|
44
74
|
end
|
data/lib/jaxx/version.rb
CHANGED
@@ -1,25 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'fog/aws/models/storage/directories'
|
2
3
|
|
3
4
|
module Jaxx
|
4
5
|
describe Upload do
|
5
6
|
|
6
7
|
describe "#process" do
|
7
|
-
let(:args) { ({
|
8
|
+
let(:args) { ({
|
9
|
+
'access_key' => 'foo',
|
10
|
+
'access_secret' => 'bar',
|
11
|
+
'file' => File.expand_path('../bar.txt', __FILE__),
|
12
|
+
'bucket' => 'temp'
|
13
|
+
}) }
|
8
14
|
|
9
15
|
subject { described_class.new(args) }
|
10
16
|
|
11
|
-
before :each do
|
12
|
-
Fog.mock!
|
13
|
-
end
|
14
|
-
|
15
|
-
it "sends file to storage" do
|
16
|
-
File.stub(:exist?).with(args['file']).and_return(true)
|
17
|
-
File.should_receive(:read).with(args['file']).and_return("")
|
18
|
-
File.should_receive(:basename).with(args['file']).and_return('bar.txt')
|
19
|
-
|
20
|
-
subject.execute
|
21
|
-
end
|
22
|
-
|
23
17
|
it "defaults filename to original filename" do
|
24
18
|
subject.filename.should eq('bar.txt')
|
25
19
|
end
|
@@ -28,7 +22,37 @@ module Jaxx
|
|
28
22
|
args['filename'] = 'foo.txt'
|
29
23
|
subject.filename.should eq('foo.txt')
|
30
24
|
end
|
31
|
-
end
|
32
25
|
|
26
|
+
describe "sending files" do
|
27
|
+
let(:files) { double('files', merge_attributes: {}, load: {}) }
|
28
|
+
|
29
|
+
before :each do
|
30
|
+
Fog.mock!
|
31
|
+
File.stub(:exist?).with(args['file']).and_return(true)
|
32
|
+
File.stub(:basename).with(args['file']).and_return('bar.txt')
|
33
|
+
Fog::Storage::AWS::Directory.any_instance.stub(:files).and_return(files)
|
34
|
+
File.stub(:read).with(args['file']).any_number_of_times.and_return("")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "to storage" do
|
38
|
+
files.should_receive(:create).and_return(true)
|
39
|
+
|
40
|
+
subject.execute
|
41
|
+
end
|
42
|
+
|
43
|
+
it "with retries" do
|
44
|
+
files.should_receive(:create).exactly(subject.retries).times.and_return(false)
|
45
|
+
|
46
|
+
-> { subject.execute }.should raise_error(RuntimeError)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "with failed create" do
|
50
|
+
files.should_receive(:create).exactly(subject.retries).times.and_raise(RuntimeError)
|
51
|
+
|
52
|
+
-> { subject.execute }.should raise_error(RuntimeError)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
33
57
|
end
|
34
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jaxx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Watts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog
|