all_seeing_pi 0.0.2 → 0.0.3
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/.gitignore +1 -1
- data/lib/all_seeing_pi.rb +14 -0
- data/lib/all_seeing_pi/configuration.rb +41 -0
- data/lib/all_seeing_pi/uploader.rb +1 -0
- data/lib/all_seeing_pi/version.rb +1 -1
- data/test/test_all_seeing_pi.rb +42 -0
- data/test/test_configuration.rb +18 -0
- data/test/test_helper.rb +5 -1
- data/test/test_uploader.rb +9 -0
- metadata +7 -2
data/.gitignore
CHANGED
data/lib/all_seeing_pi.rb
CHANGED
@@ -2,8 +2,22 @@ require "all_seeing_pi/version"
|
|
2
2
|
require "all_seeing_pi/golem"
|
3
3
|
require "all_seeing_pi/camera"
|
4
4
|
require "all_seeing_pi/uploader"
|
5
|
+
require "all_seeing_pi/configuration"
|
5
6
|
|
6
7
|
module AllSeeingPi
|
8
|
+
class << self
|
9
|
+
attr_accessor :config
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.config
|
13
|
+
@config ||= Configuration.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.configure
|
17
|
+
self.config ||= Configuration.new
|
18
|
+
yield(config)
|
19
|
+
end
|
20
|
+
|
7
21
|
def self.watch
|
8
22
|
golem = AllSeeingPi::Golem.new
|
9
23
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module AllSeeingPi
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :aws_key, :aws_secret, :redis_host, :redis_password
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
reset!
|
7
|
+
load_config_from_file
|
8
|
+
end
|
9
|
+
|
10
|
+
def reset!
|
11
|
+
instance_variables.each do |var|
|
12
|
+
instance_variable_set(var, nil)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def [](key)
|
17
|
+
send(key)
|
18
|
+
end
|
19
|
+
|
20
|
+
def []=(key, value)
|
21
|
+
send("#{key}=", value)
|
22
|
+
end
|
23
|
+
|
24
|
+
def load_config_from_file(filename = 'all_seeing_pi.yml')
|
25
|
+
paths = [
|
26
|
+
"#{filename}",
|
27
|
+
"config/#{filename}"
|
28
|
+
]
|
29
|
+
|
30
|
+
config = {}
|
31
|
+
|
32
|
+
paths.each do |filepath|
|
33
|
+
config = YAML.load_file(filepath) if File.exists?(filepath)
|
34
|
+
end
|
35
|
+
|
36
|
+
config.each do |key, value|
|
37
|
+
send("#{key}=", value)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AllSeeingPiTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@config = AllSeeingPi.config
|
6
|
+
end
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
AllSeeingPi.config.reset!
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_config_with_block
|
13
|
+
AllSeeingPi.configure do |config|
|
14
|
+
config.aws_key = 'test_config_with_block_aws_key'
|
15
|
+
end
|
16
|
+
|
17
|
+
assert_equal 'test_config_with_block_aws_key', AllSeeingPi.config[:aws_key]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_setting_config_directly
|
21
|
+
AllSeeingPi.config.aws_key = 'test_setting_config_directly_key'
|
22
|
+
|
23
|
+
assert_equal 'test_setting_config_directly_key', AllSeeingPi.config[:aws_key]
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_resetting_config
|
27
|
+
AllSeeingPi.config.aws_key = 'test_resetting_config_key'
|
28
|
+
AllSeeingPi.config.reset!
|
29
|
+
|
30
|
+
assert_nil AllSeeingPi.config[:aws_key]
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_that_config_merges_local_configuration_from_all_seeing_pi_yml
|
34
|
+
filename = 'all_seeing_pi.yml'
|
35
|
+
File.write(filename, "aws_key: 'test_config_merge_key'")
|
36
|
+
AllSeeingPi.config.load_config_from_file
|
37
|
+
|
38
|
+
assert_equal 'test_config_merge_key', AllSeeingPi.config[:aws_key]
|
39
|
+
ensure
|
40
|
+
FileUtils.rm(filename)
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ConfigurationTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@config = AllSeeingPi.config
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_load_config_from_file
|
9
|
+
filename = 'test_config.yml'
|
10
|
+
File.write(filename, "aws_key: totally_fake")
|
11
|
+
|
12
|
+
@config.load_config_from_file('test_config.yml')
|
13
|
+
|
14
|
+
assert_equal 'totally_fake', AllSeeingPi.config[:aws_key]
|
15
|
+
ensure
|
16
|
+
FileUtils.rm(filename)
|
17
|
+
end
|
18
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -10,6 +10,10 @@ VCR.configure do |c|
|
|
10
10
|
c.hook_into :webmock
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
AllSeeingPi.config.load_config_from_file('test/all_seeing_pi.yml')
|
14
14
|
|
15
|
+
AWS.config(
|
16
|
+
access_key_id: AllSeeingPi.config[:aws_key],
|
17
|
+
secret_access_key: AllSeeingPi.config[:aws_secret]
|
18
|
+
)
|
15
19
|
ENV['ALL_SEEING_PI_ENV'] = 'test'
|
data/test/test_uploader.rb
CHANGED
@@ -21,4 +21,13 @@ class UploaderTest < MiniTest::Unit::TestCase
|
|
21
21
|
assert_match /#{@bucket_name}/, name
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
def test_uploader_uses_credentials_from_config
|
26
|
+
AllSeeingPi.config[:aws_key] = 'test_key'
|
27
|
+
AllSeeingPi.config[:aws_secret] = 'test_secret'
|
28
|
+
uploader = AllSeeingPi::Uploader.new
|
29
|
+
|
30
|
+
key, secret = AllSeeingPi.config[:aws_key], AllSeeingPi.config[:aws_secret]
|
31
|
+
assert_equal ['test_key', 'test_secret'], [key, secret]
|
32
|
+
end
|
24
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: all_seeing_pi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -141,11 +141,14 @@ files:
|
|
141
141
|
- capture.sh
|
142
142
|
- lib/all_seeing_pi.rb
|
143
143
|
- lib/all_seeing_pi/camera.rb
|
144
|
+
- lib/all_seeing_pi/configuration.rb
|
144
145
|
- lib/all_seeing_pi/golem.rb
|
145
146
|
- lib/all_seeing_pi/uploader.rb
|
146
147
|
- lib/all_seeing_pi/version.rb
|
147
148
|
- test/fixtures/eye_of_sauron.jpg
|
149
|
+
- test/test_all_seeing_pi.rb
|
148
150
|
- test/test_camera.rb
|
151
|
+
- test/test_configuration.rb
|
149
152
|
- test/test_helper.rb
|
150
153
|
- test/test_palantir.rb
|
151
154
|
- test/test_uploader.rb
|
@@ -176,7 +179,9 @@ specification_version: 3
|
|
176
179
|
summary: A gem to capture images with a Raspberry Pi camera.
|
177
180
|
test_files:
|
178
181
|
- test/fixtures/eye_of_sauron.jpg
|
182
|
+
- test/test_all_seeing_pi.rb
|
179
183
|
- test/test_camera.rb
|
184
|
+
- test/test_configuration.rb
|
180
185
|
- test/test_helper.rb
|
181
186
|
- test/test_palantir.rb
|
182
187
|
- test/test_uploader.rb
|