From c331d70638c35d807128e39a9958cab5ba4eeb25 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 11 Sep 2012 12:35:41 +0200 Subject: added config class --- config.yml | 2 ++ leap_ca.rb | 8 ++++---- lib/config.rb | 18 ++++++++++++++++++ lib/couch_stream.rb | 9 ++++----- test/unit/config.yml | 2 ++ test/unit/config_test.rb | 14 ++++++++++++++ test/unit/couch_stream_test.rb | 5 +++-- 7 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 config.yml create mode 100644 lib/config.rb create mode 100644 test/unit/config.yml create mode 100644 test/unit/config_test.rb diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..c78104d --- /dev/null +++ b/config.yml @@ -0,0 +1,2 @@ +database: salticidae_certs +server: http://localhost:5984 diff --git a/leap_ca.rb b/leap_ca.rb index a2a1d37..26f3b03 100644 --- a/leap_ca.rb +++ b/leap_ca.rb @@ -2,15 +2,15 @@ require 'rubygems' require 'yajl/http_stream' +require 'lib/config' require 'lib/couch_stream' require 'lib/couch_changes' -# TODO: read the connection from a config -SERVER = "http://localhost:5984" -DATABASE = "salticidae_certs" def main - couch = CouchStream.new(SERVER, DATABASE) + config = LeapCA::Config.new(File.expand_path("../config.yml", __FILE__)) + p "Tracking #{config.database} on #{config.server}" + couch = CouchStream.new(config) changes = CouchChanges.new(couch) changes.follow do |hash| p hash diff --git a/lib/config.rb b/lib/config.rb new file mode 100644 index 0000000..dded140 --- /dev/null +++ b/lib/config.rb @@ -0,0 +1,18 @@ +require 'yaml' + +module LeapCA + class Config + def initialize(filename) + file = File.new(filename, 'r') + @hash = YAML::load(file) + end + + def server + @hash['server'] + end + + def database + @hash['database'] + end + end +end diff --git a/lib/couch_stream.rb b/lib/couch_stream.rb index bed296a..081688a 100644 --- a/lib/couch_stream.rb +++ b/lib/couch_stream.rb @@ -1,7 +1,6 @@ class CouchStream - def initialize(server, db) - @server = server - @db = db + def initialize(config) + @config = config end def get(path, options) @@ -11,11 +10,11 @@ class CouchStream yield(hash) end end - + protected def url_for(path, options = {}) - url = @server + @db + '/' + path + url = [@config.server, @config.database, path].join('/') url += '?' if options.any? url += options.map {|k,v| "#{k}=#{v}"}.join('&') end diff --git a/test/unit/config.yml b/test/unit/config.yml new file mode 100644 index 0000000..725e5af --- /dev/null +++ b/test/unit/config.yml @@ -0,0 +1,2 @@ +database: test-db +server: test-server diff --git a/test/unit/config_test.rb b/test/unit/config_test.rb new file mode 100644 index 0000000..545bedd --- /dev/null +++ b/test/unit/config_test.rb @@ -0,0 +1,14 @@ +require 'test_helper' +require 'lib/config' + +class ConfigTest < MiniTest::Unit::TestCase + + def setup + @config = LeapCA::Config.new(File.expand_path("../config.yml", __FILE__)) + end + + def test_initial_content + assert_equal 'test-server', @config.server + assert_equal 'test-db', @config.database + end +end diff --git a/test/unit/couch_stream_test.rb b/test/unit/couch_stream_test.rb index 5826ad3..438049b 100644 --- a/test/unit/couch_stream_test.rb +++ b/test/unit/couch_stream_test.rb @@ -10,7 +10,8 @@ end class CouchStreamTest < MiniTest::Unit::TestCase def setup - @stream = CouchStream.new("http://server/", "database") + @config = stub(:server => "http://server", :database => "database") + @stream = CouchStream.new(@config) @url = "http://server/database/_changes?c=d&a=b" @path = "_changes" @options = {:a => :b, :c => :d} @@ -30,5 +31,5 @@ class CouchStreamTest < MiniTest::Unit::TestCase assert_equal "http://server/database/", @stream.send(:url_for, "") assert_equal @url, @stream.send(:url_for, @path, @options) end - + end -- cgit v1.2.3