nightcrawler_swift 0.3.0 → 0.4.0

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +40 -25
  5. data/bin/nswift +8 -0
  6. data/lib/nightcrawler_swift/cli.rb +208 -0
  7. data/lib/nightcrawler_swift/command.rb +12 -2
  8. data/lib/nightcrawler_swift/{delete.rb → commands/delete.rb} +1 -1
  9. data/lib/nightcrawler_swift/{download.rb → commands/download.rb} +1 -1
  10. data/lib/nightcrawler_swift/{list.rb → commands/list.rb} +0 -0
  11. data/lib/nightcrawler_swift/{sync.rb → commands/sync.rb} +2 -2
  12. data/lib/nightcrawler_swift/commands/upload.rb +25 -0
  13. data/lib/nightcrawler_swift/connection.rb +44 -23
  14. data/lib/nightcrawler_swift/exceptions.rb +1 -0
  15. data/lib/nightcrawler_swift/tasks/asset_sync.rake +7 -1
  16. data/lib/nightcrawler_swift/version.rb +1 -1
  17. data/lib/nightcrawler_swift.rb +26 -9
  18. data/spec/fixtures/auth_success.json +6 -6
  19. data/spec/lib/nightcrawler_swift/cli_spec.rb +293 -0
  20. data/spec/lib/nightcrawler_swift/command_spec.rb +55 -14
  21. data/spec/lib/nightcrawler_swift/{delete_spec.rb → commands/delete_spec.rb} +15 -8
  22. data/spec/lib/nightcrawler_swift/{download_spec.rb → commands/download_spec.rb} +16 -7
  23. data/spec/lib/nightcrawler_swift/{list_spec.rb → commands/list_spec.rb} +12 -8
  24. data/spec/lib/nightcrawler_swift/{sync_spec.rb → commands/sync_spec.rb} +10 -1
  25. data/spec/lib/nightcrawler_swift/{upload_spec.rb → commands/upload_spec.rb} +23 -8
  26. data/spec/lib/nightcrawler_swift/connection_spec.rb +32 -20
  27. data/spec/lib/nightcrawler_swift/tasks/asset_sync_spec.rb +19 -3
  28. data/spec/lib/nightcrawler_swift_spec.rb +46 -15
  29. metadata +23 -18
  30. data/lib/nightcrawler_swift/upload.rb +0 -17
@@ -22,8 +22,8 @@ describe "asset_sync.rake" do
22
22
  Rake::Task.define_task("assets:precompile")
23
23
  end
24
24
 
25
- describe "nightcrawler_swift:rails:asset_sync" do
26
- let(:task_name) { "nightcrawler_swift:rails:asset_sync" }
25
+ describe "nightcrawler_swift:rails:sync" do
26
+ let(:task_name) { "nightcrawler_swift:rails:sync" }
27
27
  subject { rake[task_name] }
28
28
 
29
29
  before do
@@ -32,7 +32,6 @@ describe "asset_sync.rake" do
32
32
 
33
33
  it "requires environment and assets:precompile" do
34
34
  expect(subject.prerequisites).to include "environment"
35
- expect(subject.prerequisites).to include "assets:precompile"
36
35
  end
37
36
 
38
37
  it "calls sync with Rails public dir path" do
@@ -56,4 +55,21 @@ describe "asset_sync.rake" do
56
55
  end
57
56
  end
58
57
  end
58
+
59
+ describe "nightcrawler_swift:rails:asset_sync" do
60
+ let(:task_name) { "nightcrawler_swift:rails:asset_sync" }
61
+ subject { rake[task_name] }
62
+
63
+ it "calls 'assets:precompile' and 'nightcrawler_swift:rails:sync'" do
64
+ task1 = double("task1", invoke: true)
65
+ task2 = double("task2", invoke: true)
66
+
67
+ expect(Rake::Task).to receive(:[]).with("assets:precompile").and_return(task1)
68
+ expect(Rake::Task).to receive(:[]).with("nightcrawler_swift:rails:sync").and_return(task2)
69
+ expect(task1).to receive(:invoke)
70
+ expect(task2).to receive(:invoke)
71
+
72
+ subject.invoke
73
+ end
74
+ end
59
75
  end
@@ -2,6 +2,9 @@ require "spec_helper"
2
2
 
3
3
  describe NightcrawlerSwift do
4
4
 
5
+ let(:opts) { {bucket: "rogue"} }
6
+ let(:options) { OpenStruct.new(opts) }
7
+
5
8
  subject do
6
9
  NightcrawlerSwift
7
10
  end
@@ -11,9 +14,12 @@ describe NightcrawlerSwift do
11
14
  subject.logger = nil
12
15
  end
13
16
 
14
- it "returns an instance of Logger when not configured" do
15
- expect(Logger).to receive(:new).with(STDOUT)
16
- subject.logger
17
+ context "when not configured" do
18
+ it "returns an instance of Logger with INFO level" do
19
+ expect(Logger).to receive(:new).with(STDOUT).and_call_original
20
+ subject.logger
21
+ expect(subject.logger.level).to eql(Logger::INFO)
22
+ end
17
23
  end
18
24
 
19
25
  it "returns the configured logger" do
@@ -24,23 +30,55 @@ describe NightcrawlerSwift do
24
30
  end
25
31
 
26
32
  describe "::configure" do
27
- it "creates a new connection with the given opts" do
28
- opts = {bucket: "rogue"}
29
- expect(NightcrawlerSwift::Connection).to receive(:new).with(opts).and_call_original
33
+ it "creates the options struct with the given values" do
34
+ subject.configure opts
35
+ expect(subject.options).to_not be_nil
36
+ opts.keys.each do |key|
37
+ expect(subject.options.send(key)).to eql(opts[key])
38
+ end
39
+ end
40
+
41
+ it "creates a new connection" do
42
+ expect(NightcrawlerSwift::Connection).to receive(:new).and_call_original
30
43
  subject.configure opts
31
44
  expect(subject.connection).to_not be_nil
32
45
  end
46
+
47
+ context "verify_ssl" do
48
+ it "defauts to false" do
49
+ expect(subject.options.verify_ssl).to eql false
50
+ end
51
+ end
52
+
53
+ context "and max_age isn't an integer" do
54
+ let(:opts) { {max_age: "a string"} }
55
+
56
+ it "raises NightcrawlerSwift::Exceptions::ConfigurationError" do
57
+ expect { subject.configure(opts) }.to raise_error(NightcrawlerSwift::Exceptions::ConfigurationError)
58
+ end
59
+ end
33
60
  end
34
61
 
35
62
  describe "::connection" do
36
63
  it "returns the configured connection" do
37
64
  connection = NightcrawlerSwift::Connection.new
38
- expect(NightcrawlerSwift::Connection).to receive(:new).with(anything).and_return(connection)
39
- NightcrawlerSwift.configure
65
+ expect(NightcrawlerSwift::Connection).to receive(:new).and_return(connection)
66
+ NightcrawlerSwift.configure opts
40
67
  expect(NightcrawlerSwift.connection).to eql(connection)
41
68
  end
42
69
  end
43
70
 
71
+ describe "::options" do
72
+ before do
73
+ allow(NightcrawlerSwift::Connection).to receive(:new)
74
+ end
75
+
76
+ it "returns the given options" do
77
+ NightcrawlerSwift.configure(opts)
78
+ expect(NightcrawlerSwift.options).to eql(OpenStruct.new(opts.merge(verify_ssl: false)))
79
+ end
80
+ end
81
+
44
82
  describe "::sync" do
45
83
  let :dir_path do
46
84
  "path"
@@ -54,14 +92,7 @@ describe NightcrawlerSwift do
54
92
  NightcrawlerSwift.configure
55
93
  end
56
94
 
57
- it "connects" do
58
- allow(NightcrawlerSwift::Sync).to receive(:new).and_return(sync_instance)
59
- expect(NightcrawlerSwift.connection).to receive(:connect!)
60
- NightcrawlerSwift.sync dir_path
61
- end
62
-
63
95
  it "uses Sync command with the given dir_path" do
64
- expect(NightcrawlerSwift.connection).to receive(:connect!)
65
96
  expect(NightcrawlerSwift::Sync).to receive(:new).and_return(sync_instance)
66
97
  expect(sync_instance).to receive(:execute).with(dir_path)
67
98
  NightcrawlerSwift.sync dir_path
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nightcrawler_swift
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tulios
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-29 00:00:00.000000000 Z
12
+ date: 2014-09-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -100,7 +100,8 @@ description: Like the X-Men nightcrawler this gem teleports your assets to a Ope
100
100
  email:
101
101
  - ornelas.tulio@gmail.com
102
102
  - roberto.tech@gmail.com
103
- executables: []
103
+ executables:
104
+ - nswift
104
105
  extensions: []
105
106
  extra_rdoc_files: []
106
107
  files:
@@ -115,17 +116,19 @@ files:
115
116
  - LICENSE.txt
116
117
  - README.md
117
118
  - Rakefile
119
+ - bin/nswift
118
120
  - lib/nightcrawler_swift.rb
121
+ - lib/nightcrawler_swift/cli.rb
119
122
  - lib/nightcrawler_swift/command.rb
123
+ - lib/nightcrawler_swift/commands/delete.rb
124
+ - lib/nightcrawler_swift/commands/download.rb
125
+ - lib/nightcrawler_swift/commands/list.rb
126
+ - lib/nightcrawler_swift/commands/sync.rb
127
+ - lib/nightcrawler_swift/commands/upload.rb
120
128
  - lib/nightcrawler_swift/connection.rb
121
- - lib/nightcrawler_swift/delete.rb
122
- - lib/nightcrawler_swift/download.rb
123
129
  - lib/nightcrawler_swift/exceptions.rb
124
- - lib/nightcrawler_swift/list.rb
125
130
  - lib/nightcrawler_swift/railtie.rb
126
- - lib/nightcrawler_swift/sync.rb
127
131
  - lib/nightcrawler_swift/tasks/asset_sync.rake
128
- - lib/nightcrawler_swift/upload.rb
129
132
  - lib/nightcrawler_swift/version.rb
130
133
  - nightcrawler_swift.gemspec
131
134
  - spec/fixtures/assets/css1.css
@@ -134,14 +137,15 @@ files:
134
137
  - spec/fixtures/assets/ex3/ex4.txt
135
138
  - spec/fixtures/assets/js1.js
136
139
  - spec/fixtures/auth_success.json
140
+ - spec/lib/nightcrawler_swift/cli_spec.rb
137
141
  - spec/lib/nightcrawler_swift/command_spec.rb
142
+ - spec/lib/nightcrawler_swift/commands/delete_spec.rb
143
+ - spec/lib/nightcrawler_swift/commands/download_spec.rb
144
+ - spec/lib/nightcrawler_swift/commands/list_spec.rb
145
+ - spec/lib/nightcrawler_swift/commands/sync_spec.rb
146
+ - spec/lib/nightcrawler_swift/commands/upload_spec.rb
138
147
  - spec/lib/nightcrawler_swift/connection_spec.rb
139
- - spec/lib/nightcrawler_swift/delete_spec.rb
140
- - spec/lib/nightcrawler_swift/download_spec.rb
141
- - spec/lib/nightcrawler_swift/list_spec.rb
142
- - spec/lib/nightcrawler_swift/sync_spec.rb
143
148
  - spec/lib/nightcrawler_swift/tasks/asset_sync_spec.rb
144
- - spec/lib/nightcrawler_swift/upload_spec.rb
145
149
  - spec/lib/nightcrawler_swift_spec.rb
146
150
  - spec/spec_helper.rb
147
151
  homepage: https://github.com/tulios/nightcrawler_swift
@@ -176,13 +180,14 @@ test_files:
176
180
  - spec/fixtures/assets/ex3/ex4.txt
177
181
  - spec/fixtures/assets/js1.js
178
182
  - spec/fixtures/auth_success.json
183
+ - spec/lib/nightcrawler_swift/cli_spec.rb
179
184
  - spec/lib/nightcrawler_swift/command_spec.rb
185
+ - spec/lib/nightcrawler_swift/commands/delete_spec.rb
186
+ - spec/lib/nightcrawler_swift/commands/download_spec.rb
187
+ - spec/lib/nightcrawler_swift/commands/list_spec.rb
188
+ - spec/lib/nightcrawler_swift/commands/sync_spec.rb
189
+ - spec/lib/nightcrawler_swift/commands/upload_spec.rb
180
190
  - spec/lib/nightcrawler_swift/connection_spec.rb
181
- - spec/lib/nightcrawler_swift/delete_spec.rb
182
- - spec/lib/nightcrawler_swift/download_spec.rb
183
- - spec/lib/nightcrawler_swift/list_spec.rb
184
- - spec/lib/nightcrawler_swift/sync_spec.rb
185
191
  - spec/lib/nightcrawler_swift/tasks/asset_sync_spec.rb
186
- - spec/lib/nightcrawler_swift/upload_spec.rb
187
192
  - spec/lib/nightcrawler_swift_spec.rb
188
193
  - spec/spec_helper.rb
@@ -1,17 +0,0 @@
1
- require 'digest'
2
-
3
- module NightcrawlerSwift
4
- class Upload < Command
5
-
6
- def execute path, file
7
- content_type = MultiMime.by_file(file).content_type
8
- content = file.read
9
- etag = '"%s"' % Digest::MD5.new.update(content).hexdigest
10
- headers = {etag: etag, content_type: content_type}
11
- headers.merge!({cache_control: "max-age=#{connection.opts.max_age}"}) if connection.opts.max_age
12
- response = put "#{connection.upload_url}/#{path}", body: content, headers: headers
13
- [200, 201].include?(response.code)
14
- end
15
-
16
- end
17
- end