opener-daemons 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: