alephant-publisher 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a5bbb93c60c689ce1f69b65a986b7e93717df1e
4
- data.tar.gz: 03ed87d84d8464a6851fb4d35f639988cf8d57d7
3
+ metadata.gz: bacfbe3bd9b3fa1e06d05b6c1041e7e30d7c6e64
4
+ data.tar.gz: b58a5689a5a9f4028f6ac4c565801bc83ef18203
5
5
  SHA512:
6
- metadata.gz: bfeba287b7109b70a12e04d3c3d694398096a0ff440ed1b3a344cadcdc2acccf67803b0ef8dd56df1799f9fbf0b2926fb35b056d00f6e79847f9132f5e94b210
7
- data.tar.gz: 2ed0c9650818a0b1f5e68aac83d1286787e781ed7ddae6463e8d019cf9a7d32ffa892a5082b8b5386e0b7d4d445613f3be83b67fd3fcee240631bec3d5102f42
6
+ metadata.gz: fecb4254a1c8bd0cb72ea7e3b01f1ba3641b9dabc6ffc4c6fb90ed6066dca1df1504cb991c5fe454c015a1fdec5c7cd137201eeafa7cb2caf7c132b0916b8673
7
+ data.tar.gz: 09be2c0a1557a66538b2f83f46a4dc0069d99ca2898be8960c42bdaa74d36d22cf8d63d7f83be914f20c2107bdc3028bb8dabd8c7f3fbc20255dddc43e2a12b4
data/README.md CHANGED
@@ -67,6 +67,47 @@ thread = Alephant::Alephant.new(opts, logger).run!
67
67
  thread.join
68
68
  ```
69
69
 
70
+ Publisher requires both queue options and writer options to be provided. To ensure a standard format you should use the `Options` class to generate your options before passing them onto the Publisher...
71
+
72
+ ```ruby
73
+ opts = Alephant::Publisher::Options.new
74
+ # => #<Alephant::Publisher::Options:0x0602f958 @queue={}, @writer={}>
75
+
76
+ opts.queue
77
+ # => {}
78
+ # empty to start with
79
+
80
+ opts.writer
81
+ # => {}
82
+ # empty to start with
83
+
84
+ opts.add_queue(:foo => "bar")
85
+ # The key 'foo' is invalid
86
+ # => nil
87
+
88
+ opts.queue
89
+ # => {}
90
+ # still empty as the foo key was invalid
91
+
92
+ opts.add_queue(:sqs_queue_url => "bar")
93
+ # => {:sqs_queue_url=>"bar"}
94
+
95
+ opts.queue
96
+ # => {:sqs_queue_url=>"bar"}
97
+
98
+ opts.add_writer(:sqs_queue_url => "bar")
99
+ # The key 'sqs_queue_url' is invalid
100
+ # => nil
101
+ # the sqs_queue_url key was valid for the queue options,
102
+ # but is invalid when trying to add it to the writer options
103
+
104
+ opts.add_writer(:msg_vary_id_path => "bar")
105
+ => {:msg_vary_id_path=>"bar"}
106
+
107
+ opts.writer
108
+ => {:msg_vary_id_path=>"bar"}
109
+ ```
110
+
70
111
  logger is optional, and must confirm to the Ruby standard logger interface
71
112
 
72
113
  Provide a view in a folder (fixtures are optional):
@@ -1,6 +1,7 @@
1
1
  require_relative 'env'
2
2
 
3
3
  require 'alephant/publisher/version'
4
+ require 'alephant/publisher/options'
4
5
  require 'alephant/publisher/queue'
5
6
  require 'alephant/publisher/writer'
6
7
  require 'alephant/logger'
@@ -23,24 +24,12 @@ module Alephant
23
24
  ::Alephant::Logger.set_logger(logger) unless logger.nil?
24
25
 
25
26
  @opts = opts
27
+
26
28
  @queue = Queue.new(
27
- opts[:sqs_queue_url],
28
- opts[:visibility_timeout] || VISIBILITY_TIMEOUT,
29
- opts[:receive_wait_time] || RECEIVE_WAIT_TIME,
29
+ opts.queue[:sqs_queue_url],
30
+ opts.queue[:visibility_timeout] || VISIBILITY_TIMEOUT,
31
+ opts.queue[:receive_wait_time] || RECEIVE_WAIT_TIME,
30
32
  )
31
-
32
- @writer_opts = opts.select do |k,v|
33
- [
34
- :msg_vary_id_path,
35
- :sequencer_table_name,
36
- :sequence_id_path,
37
- :renderer_id,
38
- :s3_bucket_id,
39
- :s3_object_path,
40
- :view_path,
41
- :lookup_table_name
42
- ].include? k
43
- end
44
33
  end
45
34
 
46
35
  def run!
@@ -51,7 +40,7 @@ module Alephant
51
40
 
52
41
  def process(msg)
53
42
  unless msg.nil?
54
- Writer.new(@writer_opts, msg).run!
43
+ Writer.new(@opts.writer, msg).run!
55
44
  msg.delete
56
45
  end
57
46
  end
@@ -0,0 +1,59 @@
1
+ require 'aws-sdk'
2
+ require 'alephant/logger'
3
+
4
+ module Alephant
5
+ module Publisher
6
+ class InvalidKeySpecifiedError < StandardError; end
7
+
8
+ class Options
9
+ attr_reader :queue, :writer
10
+
11
+ QUEUE_OPTS = [
12
+ :receive_wait_time,
13
+ :sqs_queue_url,
14
+ :visibility_timeout
15
+ ]
16
+
17
+ WRITER_OPTS = [
18
+ :lookup_table_name,
19
+ :msg_vary_id_path,
20
+ :renderer_id,
21
+ :s3_bucket_id,
22
+ :s3_object_path,
23
+ :sequence_id_path,
24
+ :sequencer_table_name,
25
+ :view_path
26
+ ]
27
+
28
+ def initialize
29
+ @queue = {}
30
+ @writer = {}
31
+ end
32
+
33
+ def add_queue(opts)
34
+ execute @queue, QUEUE_OPTS, opts
35
+ end
36
+
37
+ def add_writer(opts)
38
+ execute @writer, WRITER_OPTS, opts
39
+ end
40
+
41
+ private
42
+
43
+ def execute(instance, type, opts)
44
+ begin
45
+ validate type, opts
46
+ instance.merge! opts
47
+ rescue Exception => e
48
+ puts e.message
49
+ end
50
+ end
51
+
52
+ def validate(type, opts)
53
+ opts.each do |key, value|
54
+ raise InvalidKeySpecifiedError, "The key '#{key}' is invalid" unless type.include? key.to_sym
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,5 +1,5 @@
1
1
  module Alephant
2
2
  module Publisher
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Alephant::Publisher do
4
- let(:instance) { Alephant::Publisher.create }
4
+ let(:options) { Alephant::Publisher::Options.new }
5
+ let(:instance) { Alephant::Publisher.create(options) }
5
6
 
6
7
  before(:each) do
7
8
  Alephant::Publisher::Queue.any_instance.stub(:initialize)
@@ -9,8 +10,7 @@ describe Alephant::Publisher do
9
10
 
10
11
  describe "#initialize(opts = {}, logger)" do
11
12
  it "sets parser, sequencer, queue and writer" do
12
- expect(instance.queue).to be_a Alephant::Publisher::Queue
13
+ expect(instance.queue).to be_a Alephant::Publisher::Queue
13
14
  end
14
15
  end
15
16
  end
16
-
@@ -3,14 +3,14 @@ require 'spec_helper'
3
3
  describe Alephant::Publisher::Writer do
4
4
  let(:opts) do
5
5
  {
6
- :s3_bucket_id => :s3_bucket_id,
7
- :s3_object_path => :s3_object_path,
8
- :renderer_id => :renderer_id,
9
- :view_path => :view_path,
10
- :lookup_table_name => 'lookup_table_name',
6
+ :lookup_table_name => 'lookup_table_name',
7
+ :msg_vary_id_path => '$.vary',
8
+ :renderer_id => :renderer_id,
9
+ :s3_bucket_id => :s3_bucket_id,
10
+ :s3_object_path => :s3_object_path,
11
+ :sequence_id_path => '$.sequence',
11
12
  :sequencer_table_name => :sequencer_table_name,
12
- :sequence_id_path => '$.sequence',
13
- :msg_vary_id_path => '$.vary',
13
+ :view_path => :view_path
14
14
  }
15
15
  end
16
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant-publisher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Integralist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-08 00:00:00.000000000 Z
11
+ date: 2014-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -363,6 +363,7 @@ files:
363
363
  - alephant-publisher.gemspec
364
364
  - lib/alephant/env.rb
365
365
  - lib/alephant/publisher.rb
366
+ - lib/alephant/publisher/options.rb
366
367
  - lib/alephant/publisher/queue.rb
367
368
  - lib/alephant/publisher/render_mapper.rb
368
369
  - lib/alephant/publisher/version.rb
@@ -410,3 +411,4 @@ test_files:
410
411
  - spec/render_mapper_spec.rb
411
412
  - spec/spec_helper.rb
412
413
  - spec/writer_spec.rb
414
+ has_rdoc: