opener-daemons 1.2.0 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 983e879dcaa50627ad0893e28d50d70f69fd77c3
4
- data.tar.gz: 9c6cf436bc1c7aee5a78d3b62adcd220df334b02
3
+ metadata.gz: db9deedcb0722c93dce8dbf63951426670ccfc31
4
+ data.tar.gz: 0c915961e981220c36f5668d89420d12eea6a615
5
5
  SHA512:
6
- metadata.gz: 77b310b5014d001ab149822d64fba94e1b0553ac95609b6f56ef7e77cba507792db17163c0832aa79cf24faa8117497c758c2853f86ae862c63f79f7158f8eef
7
- data.tar.gz: 4cdab83d98edf62ce78cd9a2003d61c6b44bcd060235be307bf4f7023b24e293863ac8c7432b8b60b05a99256b874e686d0b73635a4386964f392d46e93e3d40
6
+ metadata.gz: bd96be27c2fd2c3a312afdb304b903262bbfee59d3a97a46c492aae903d744928e132afbfd91cca2069d2cf68fd3ea587537269a0268ad520146c17f59e4924c
7
+ data.tar.gz: e460109a333e013dfbfe54228348f030475914406d8cc7faed4af9e1196cf36f04d8b07b55df2902161c6e6a82a18e957dd94a7fe0caf8e0fe70cebf47422392
@@ -13,8 +13,10 @@ module Opener
13
13
  attr_reader :batch_size, :buffer_size, :sleep_interval,
14
14
  :input_queue, :output_queue,
15
15
  :input_buffer, :output_buffer,
16
+ :bucket_name, :bucket_dir, :file_suffix,
16
17
  :klass,
17
- :logger
18
+ :logger,
19
+ :script_name
18
20
 
19
21
  attr_accessor :threads, :thread_counts
20
22
 
@@ -33,6 +35,12 @@ module Opener
33
35
  if options[:output_queue]
34
36
  @output_queue = Opener::Daemons::SQS.find(options[:output_queue])
35
37
  end
38
+
39
+ # Get bucket name and other bucket options, if any.
40
+ if @bucket_name = options[:bucket_name]
41
+ @bucket_dir = options.fetch(:bucket_dir, nil)
42
+ @file_suffix = options.fetch(:file_suffix, nil)
43
+ end
36
44
 
37
45
  # Initialize Buffers
38
46
  @input_buffer = Queue.new
@@ -45,7 +53,7 @@ module Opener
45
53
  # Working component
46
54
  @klass = klass
47
55
 
48
- script_name = File.basename($0, ".rb")
56
+ @script_name = File.basename($0, ".rb")
49
57
 
50
58
  @logger = Logger.new(options.fetch(:log, STDOUT))
51
59
  @logger.level = if options.fetch(:debug, false)
@@ -103,8 +111,8 @@ module Opener
103
111
  identifier = klass.new
104
112
  loop do
105
113
  message = input_buffer.pop
106
-
107
- input = message[:body]["input"]
114
+
115
+ input = get_input(message[:body])
108
116
  input,* = input if input.kind_of?(Array)
109
117
 
110
118
  begin
@@ -138,7 +146,15 @@ module Opener
138
146
  message = output_buffer.pop
139
147
  callbacks = extract_callbacks(message[:body]["callbacks[]"])
140
148
  handler = Opener::CallbackHandler.new
141
- message[:body][:input] = message[:output].force_encoding("UTF-8")
149
+
150
+ if bucket_name
151
+ filename = [message[:body]["request_id"], script_name, Time.now.to_i].join("-")
152
+ s3 = Opener::Daemons::S3.new(bucket_name, message[:output].force_encoding("UTF-8"), filename, bucket_dir, file_suffix)
153
+ s3.upload
154
+ message[:body][:input_url] = s3.url
155
+ else
156
+ message[:body][:input] = message[:output].force_encoding("UTF-8")
157
+ end
142
158
 
143
159
 
144
160
  unless callbacks.empty?
@@ -203,7 +219,11 @@ module Opener
203
219
 
204
220
  return callbacks
205
221
  end
206
-
222
+
223
+ def get_input(body)
224
+ return body.delete("input") if body["input"]
225
+ return HTTPClient.new.get(body.delete("input_url")).body if body["input_url"]
226
+ end
207
227
  end
208
228
  end
209
229
  end
@@ -147,6 +147,18 @@ module Opener
147
147
  opts.on("--relentless", "Be relentless, fail fast, fail hard, do not continue processing when encountering component errors") do |v|
148
148
  options[:relentless] = true
149
149
  end
150
+
151
+ opts.on("--bucket-name BUCKET_NAME", "The name of the bucket where the output should be stored.") do |v|
152
+ options[:bucket_name] = v
153
+ end
154
+
155
+ opts.on("--bucket-dir BUCKET_DIR", "The directory that the output should be stored in. Requires --bucket-name option.") do |v|
156
+ options[:bucket_dir] = v
157
+ end
158
+
159
+ opts.on("--file-suffix FILE_SUFFIX", "The suffix of the filename. Requires --bucket-name option.") do |v|
160
+ options[:bucket_name] = v
161
+ end
150
162
 
151
163
  opts.separator ""
152
164
 
@@ -0,0 +1,34 @@
1
+ require 'aws-sdk'
2
+
3
+ module Opener
4
+ module Daemons
5
+ class S3
6
+ attr_reader :s3_client, :bucket_name, :content, :filename, :directory, :url
7
+
8
+ def initialize(bucket_name, content, filename, directory = nil, filename_suffix = nil)
9
+ @s3_client = AWS::S3.new
10
+ @bucket_name = bucket_name
11
+ @filename = [filename, filename_suffix].compact.reject{|e| e.empty?}.join("-")
12
+ @content = content
13
+ @directory = directory
14
+ end
15
+
16
+ def upload
17
+ @filename = File.join(directory, filename) if directory
18
+ bucket = s3_client.buckets[bucket_name]
19
+ object = bucket.objects["#{filename}.kaf"]
20
+
21
+ object.write(content)
22
+
23
+ @url = object.url_for(
24
+ :read,
25
+ :secure => false,
26
+ :force_path_style => false,
27
+ :response_content_type => "application/xml",
28
+ :response_content_disposition => "attachment",
29
+ :expires => 7 * 24 * 60 * 60 # 7 days
30
+ )
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  module Daemons
3
- VERSION = "1.2.0"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require "opener/daemons/version"
2
2
  require "opener/daemons/sqs"
3
+ require "opener/daemons/s3"
3
4
  require "opener/daemons/daemon"
4
5
  require "opener/daemons/opt_parser"
5
6
  require "opener/daemons/controller"
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
17
17
  'README.md'
18
18
  ]).select { |file| File.basename(file) }
19
19
 
20
- spec.add_dependency 'aws-sdk-core'
20
+ spec.add_dependency 'aws-sdk'
21
21
  spec.add_dependency 'spoon'
22
22
  spec.add_dependency 'dotenv'
23
23
  spec.add_dependency "opener-callback-handler"
24
+ spec.add_dependency "httpclient"
24
25
 
25
26
  spec.add_development_dependency "bundler", "~> 1.5"
26
27
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-daemons
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wilco van Duinkerken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-16 00:00:00.000000000 Z
11
+ date: 2014-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk-core
14
+ name: aws-sdk
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
@@ -66,6 +66,20 @@ dependencies:
66
66
  version: '0'
67
67
  prerelease: false
68
68
  type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: httpclient
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ prerelease: false
82
+ type: :runtime
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,6 +133,7 @@ files:
119
133
  - lib/opener/daemons/controller.rb
120
134
  - lib/opener/daemons/daemon.rb
121
135
  - lib/opener/daemons/opt_parser.rb
136
+ - lib/opener/daemons/s3.rb
122
137
  - lib/opener/daemons/sqs.rb
123
138
  - lib/opener/daemons/version.rb
124
139
  - LICENSE.txt
@@ -149,4 +164,3 @@ signing_key:
149
164
  specification_version: 4
150
165
  summary: Daemonize OpeNER components and make them read from an SQS queue. JRuby compatible.
151
166
  test_files: []
152
- has_rdoc: