opener-daemons 1.1.1 → 1.2.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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MGY5NjQ1MjM2M2ZjMmEzMGQ5OTFhODc3NGRhMTFkODQ3MTk5ODBmMg==
5
- data.tar.gz: !binary |-
6
- MzllZTE4ODlhOGU4M2QzNmE4NDcyOTM0MTNmN2E0ZWU0ODU1MGZhOA==
2
+ SHA1:
3
+ metadata.gz: 983e879dcaa50627ad0893e28d50d70f69fd77c3
4
+ data.tar.gz: 9c6cf436bc1c7aee5a78d3b62adcd220df334b02
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZmM0NDgxODYxZmQxMDU3MjBjNmY4ODRhYzQwYjE4MjA1MDNmOWQ3ZjFlZmVi
10
- NGQ5ZWExNjE0ZDQyYzZmNmY2ZDU1NzIwZTgxNjk5ODg4MzFhNWE5OTNhMGI5
11
- YzhmYWRjNzA3NzczOGUyNjZiN2ExNzhlNGNiZWZiZDY0NTEwNGI=
12
- data.tar.gz: !binary |-
13
- ODdjNmYwYjVjYmY5NzU5MjliMGE5MWQ2NWY2OWNmZTNlMTA3MmM3Yjk5ODA4
14
- OGQwNDcxYmU5NTVhYmVlNjFjNTBlZjU4NGE2NWM3MGNhODJmYTRmNWE1OWRk
15
- NjEzMGFlMDY3M2FmOTEyOWQ0MzRjYmNiYWJlMTU1N2UyMjI1ZGQ=
6
+ metadata.gz: 77b310b5014d001ab149822d64fba94e1b0553ac95609b6f56ef7e77cba507792db17163c0832aa79cf24faa8117497c758c2853f86ae862c63f79f7158f8eef
7
+ data.tar.gz: 4cdab83d98edf62ce78cd9a2003d61c6b44bcd060235be307bf4f7023b24e293863ac8c7432b8b60b05a99256b874e686d0b73635a4386964f392d46e93e3d40
data/LICENSE.txt CHANGED
@@ -1,22 +1,13 @@
1
- Copyright (c) 2014 Wilco van Duinkerken
1
+ Copyright 2014 OpeNER Project Consortium
2
2
 
3
- MIT License
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
4
6
 
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
7
+ http://www.apache.org/licenses/LICENSE-2.0
12
8
 
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -3,6 +3,7 @@ require "opener/daemons/sqs"
3
3
  require "opener/daemons/daemon"
4
4
  require "opener/daemons/opt_parser"
5
5
  require "opener/daemons/controller"
6
+ require 'opener/callback_handler'
6
7
 
7
8
  require "dotenv"
8
9
  env_file = File.expand_path("~/.opener-daemons-env")
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  require 'thread'
2
4
  require 'opener/daemons/sqs'
3
5
  require 'json'
@@ -58,7 +60,6 @@ module Opener
58
60
  def buffer_new_messages
59
61
  return if input_buffer.size > buffer_size
60
62
  return if output_buffer.size > buffer_size
61
-
62
63
  messages = input_queue.receive_messages(batch_size)
63
64
 
64
65
  if messages.nil?
@@ -103,7 +104,7 @@ module Opener
103
104
  loop do
104
105
  message = input_buffer.pop
105
106
 
106
- input = JSON.parse(message[:body])["input"]
107
+ input = message[:body]["input"]
107
108
  input,* = input if input.kind_of?(Array)
108
109
 
109
110
  begin
@@ -119,9 +120,11 @@ module Opener
119
120
  output = input
120
121
  end
121
122
  end
122
-
123
- output_buffer.push({ :output=>output,
124
- :handle=>message[:receipt_handle]})
123
+ message[:body].delete("input")
124
+ output_buffer.push({ :output=>output,
125
+ :body => message[:body],
126
+ :handle=>message[:receipt_handle]
127
+ })
125
128
  end
126
129
  end
127
130
  end
@@ -133,10 +136,22 @@ module Opener
133
136
  logger.info "Pusher #{t+1} ready for action..."
134
137
  loop do
135
138
  message = output_buffer.pop
136
-
137
- payload = {:input=>message[:output].force_encoding("UTF-8")}.to_json
138
- output_queue.send_message(payload) if output_queue
139
+ callbacks = extract_callbacks(message[:body]["callbacks[]"])
140
+ handler = Opener::CallbackHandler.new
141
+ message[:body][:input] = message[:output].force_encoding("UTF-8")
142
+
143
+
144
+ unless callbacks.empty?
145
+ callback_url = callbacks.shift
146
+ message[:body][:'callbacks[]'] = callbacks
147
+ payload = {:body => message[:body]}
148
+ handler.post(callback_url, payload)
149
+ else
150
+ payload = {:body => message[:body]}
151
+ handler.post(output_queue.queue_url, payload)
152
+ end
139
153
  input_queue.delete_message(message[:handle])
154
+
140
155
  end
141
156
  end
142
157
  end
@@ -174,6 +189,20 @@ module Opener
174
189
  def relentless?
175
190
  @relentless
176
191
  end
192
+
193
+ ##
194
+ # Returns an Array containing the callback URLs, ignoring empty values.
195
+ #
196
+ # @param [Array|String] input
197
+ # @return [Array]
198
+ #
199
+ def extract_callbacks(input)
200
+ return [] if input.nil? || input.empty?
201
+
202
+ callbacks = input.compact.reject(&:empty?)
203
+
204
+ return callbacks
205
+ end
177
206
 
178
207
  end
179
208
  end
@@ -10,7 +10,7 @@ module Opener
10
10
  end
11
11
 
12
12
  def initialize(name)
13
- @sqs = Aws::SQS.new
13
+ @sqs = Aws::SQS::Client.new
14
14
  @name = name
15
15
  begin
16
16
  @url = sqs.get_queue_url(:queue_name=>name)[:queue_url]
@@ -30,7 +30,23 @@ module Opener
30
30
 
31
31
  def receive_messages(limit)
32
32
  result = sqs.receive_message(:queue_url=>url,
33
- :max_number_of_messages=>limit)[:messages]
33
+ :max_number_of_messages=>limit)[:messages] rescue []
34
+
35
+ result ? to_hash(result) : []
36
+
37
+ end
38
+
39
+ def to_hash(messages)
40
+ messages.map do |m|
41
+ hash = m.to_hash
42
+ json_body = JSON.parse(hash.delete(:body))
43
+ hash[:body] = json_body["body"] ? json_body["body"] : json_body
44
+ hash
45
+ end
46
+ end
47
+
48
+ def queue_url
49
+ url
34
50
  end
35
51
 
36
52
  end
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  module Daemons
3
- VERSION = "1.1.1"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.summary = %q{Daemonize OpeNER components and make them read from an SQS queue. JRuby compatible.}
9
9
  spec.description = spec.summary
10
10
  spec.homepage = "http://opener-project.github.io"
11
- spec.license = "Apache v2"
11
+ spec.license = "Apache 2.0"
12
12
 
13
13
  spec.files = Dir.glob([
14
14
  'lib/**/*',
@@ -17,9 +17,10 @@ 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', '>= 2.0.0.rc1', '< 3'
20
+ spec.add_dependency 'aws-sdk-core'
21
21
  spec.add_dependency 'spoon'
22
22
  spec.add_dependency 'dotenv'
23
+ spec.add_dependency "opener-callback-handler"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.5"
25
26
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,144 +1,152 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-daemons
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wilco van Duinkerken
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-22 00:00:00.000000000 Z
11
+ date: 2014-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
15
- requirement: !ruby/object:Gem::Requirement
15
+ version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0.rc1
20
- - - <
19
+ version: '0'
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - '>='
21
23
  - !ruby/object:Gem::Version
22
- version: '3'
23
- type: :runtime
24
+ version: '0'
24
25
  prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: spoon
25
29
  version_requirements: !ruby/object:Gem::Requirement
26
30
  requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: 2.0.0.rc1
30
- - - <
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
- version: '3'
33
- - !ruby/object:Gem::Dependency
34
- name: spoon
33
+ version: '0'
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
- - - ! '>='
36
+ - - '>='
38
37
  - !ruby/object:Gem::Version
39
38
  version: '0'
40
- type: :runtime
41
39
  prerelease: false
40
+ type: :runtime
41
+ - !ruby/object:Gem::Dependency
42
+ name: dotenv
42
43
  version_requirements: !ruby/object:Gem::Requirement
43
44
  requirements:
44
- - - ! '>='
45
+ - - '>='
45
46
  - !ruby/object:Gem::Version
46
47
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: dotenv
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
- - - ! '>='
50
+ - - '>='
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
- type: :runtime
55
53
  prerelease: false
54
+ type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: opener-callback-handler
56
57
  version_requirements: !ruby/object:Gem::Requirement
57
58
  requirements:
58
- - - ! '>='
59
+ - - '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: bundler
63
62
  requirement: !ruby/object:Gem::Requirement
64
63
  requirements:
65
- - - ~>
64
+ - - '>='
66
65
  - !ruby/object:Gem::Version
67
- version: '1.5'
68
- type: :development
66
+ version: '0'
69
67
  prerelease: false
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
70
71
  version_requirements: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - ~>
73
74
  - !ruby/object:Gem::Version
74
75
  version: '1.5'
75
- - !ruby/object:Gem::Dependency
76
- name: rake
77
76
  requirement: !ruby/object:Gem::Requirement
78
77
  requirements:
79
- - - ! '>='
78
+ - - ~>
80
79
  - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
80
+ version: '1.5'
83
81
  prerelease: false
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
84
85
  version_requirements: !ruby/object:Gem::Requirement
85
86
  requirements:
86
- - - ! '>='
87
+ - - '>='
87
88
  - !ruby/object:Gem::Version
88
89
  version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: rspec
91
90
  requirement: !ruby/object:Gem::Requirement
92
91
  requirements:
93
- - - ! '>='
92
+ - - '>='
94
93
  - !ruby/object:Gem::Version
95
94
  version: '0'
96
- type: :development
97
95
  prerelease: false
96
+ type: :development
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
98
99
  version_requirements: !ruby/object:Gem::Requirement
99
100
  requirements:
100
- - - ! '>='
101
+ - - '>='
101
102
  - !ruby/object:Gem::Version
102
103
  version: '0'
103
- description: Daemonize OpeNER components and make them read from an SQS queue. JRuby
104
- compatible.
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ prerelease: false
110
+ type: :development
111
+ description: Daemonize OpeNER components and make them read from an SQS queue. JRuby compatible.
105
112
  email:
106
113
  - wilco@sparkboxx.com
107
114
  executables: []
108
115
  extensions: []
109
116
  extra_rdoc_files: []
110
117
  files:
118
+ - lib/opener/daemons.rb
111
119
  - lib/opener/daemons/controller.rb
112
120
  - lib/opener/daemons/daemon.rb
113
121
  - lib/opener/daemons/opt_parser.rb
114
122
  - lib/opener/daemons/sqs.rb
115
123
  - lib/opener/daemons/version.rb
116
- - lib/opener/daemons.rb
117
124
  - LICENSE.txt
118
125
  - opener-daemons.gemspec
119
126
  - README.md
120
127
  homepage: http://opener-project.github.io
121
128
  licenses:
122
- - Apache v2
129
+ - Apache 2.0
123
130
  metadata: {}
124
- post_install_message:
131
+ post_install_message:
125
132
  rdoc_options: []
126
133
  require_paths:
127
134
  - lib
128
135
  required_ruby_version: !ruby/object:Gem::Requirement
129
136
  requirements:
130
- - - ! '>='
137
+ - - '>='
131
138
  - !ruby/object:Gem::Version
132
139
  version: '0'
133
140
  required_rubygems_version: !ruby/object:Gem::Requirement
134
141
  requirements:
135
- - - ! '>='
142
+ - - '>='
136
143
  - !ruby/object:Gem::Version
137
144
  version: '0'
138
145
  requirements: []
139
- rubyforge_project:
140
- rubygems_version: 2.1.11
141
- signing_key:
146
+ rubyforge_project:
147
+ rubygems_version: 2.1.9
148
+ signing_key:
142
149
  specification_version: 4
143
150
  summary: Daemonize OpeNER components and make them read from an SQS queue. JRuby compatible.
144
151
  test_files: []
152
+ has_rdoc: