active_elastic_job 1.3.3 → 1.4.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c8395a6c3ac158c58cf57615c9df6bbe847ea76
|
4
|
+
data.tar.gz: 33b4188334606d4df92dd4fff85e2fc6a5558629
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e53f0f7464e92f180bbd19af890a8069dbecafab7032865c4eb8f83052c7f01a3497c83383e023c996097875c4208fb70b1274e83e868fb80d50257eaeb53390
|
7
|
+
data.tar.gz: 44fab25e6c687772f19b01816ee56f94ccefc06e517a541b5aad1363f9a72f289d6a65713f5e663d89a7dda86844d070ca5ad8e4c3f0670b93102b5760958e17
|
@@ -26,15 +26,19 @@ module ActiveElasticJob
|
|
26
26
|
|
27
27
|
def call(env) #:nodoc:
|
28
28
|
request = ActionDispatch::Request.new env
|
29
|
-
if aws_sqsd?(request) && originates_from_gem?(request)
|
29
|
+
if enabled? && aws_sqsd?(request) && originates_from_gem?(request)
|
30
|
+
unless request.local?
|
31
|
+
m = "Accepts only requests from localhost for job processing".freeze
|
32
|
+
return ['403', {CONTENT_TYPE_HEADER_NAME => 'text/plain' }, [ m ]]
|
33
|
+
end
|
30
34
|
begin
|
31
35
|
verify!(request)
|
32
36
|
job = JSON.load(request.body)
|
33
37
|
ActiveJob::Base.execute(job)
|
34
38
|
rescue ActiveElasticJob::MessageVerifier::InvalidDigest => e
|
35
|
-
return ['403', {CONTENT_TYPE_HEADER_NAME =>
|
39
|
+
return ['403', {CONTENT_TYPE_HEADER_NAME => 'text/plain' }, ["incorrect digest"]]
|
36
40
|
rescue StandardError => e
|
37
|
-
return ['500', {CONTENT_TYPE_HEADER_NAME =>
|
41
|
+
return ['500', {CONTENT_TYPE_HEADER_NAME => 'text/plain' }, [e.message]]
|
38
42
|
end
|
39
43
|
return [OK_RESPONSE_CODE , {CONTENT_TYPE_HEADER_NAME => CONTENT_TYPE }, [ '' ]]
|
40
44
|
end
|
@@ -43,6 +47,11 @@ module ActiveElasticJob
|
|
43
47
|
|
44
48
|
private
|
45
49
|
|
50
|
+
def enabled?
|
51
|
+
var = ENV['DISABLE_SQS_CONSUMER'.freeze]
|
52
|
+
var == nil || var == 'false'.freeze
|
53
|
+
end
|
54
|
+
|
46
55
|
def verify!(request)
|
47
56
|
secret_key_base = Rails.application.secrets[:secret_key_base]
|
48
57
|
@verifier ||= ActiveElasticJob::MessageVerifier.new(secret_key_base)
|
@@ -15,6 +15,7 @@ module ActiveJob
|
|
15
15
|
# Rails.application.config.active_job.queue_adapter = :active_elastic_job
|
16
16
|
class ActiveElasticJobAdapter
|
17
17
|
MAX_MESSAGE_SIZE = (256 * 1024)
|
18
|
+
MAX_DELAY_IN_MINUTES = 15
|
18
19
|
|
19
20
|
extend ActiveElasticJob::MD5MessageDigestCalculation
|
20
21
|
|
@@ -126,15 +127,14 @@ The message with Message ID #{message_id} sent to SQS might be corrupted.
|
|
126
127
|
|
127
128
|
def calculate_delay(timestamp)
|
128
129
|
delay = (timestamp - Time.current.to_f).to_i + 1
|
129
|
-
if delay >
|
130
|
+
if delay > MAX_DELAY_IN_MINUTES.minutes
|
130
131
|
msg =<<-MSG
|
131
|
-
Jobs cannot be scheduled more than
|
132
|
+
Jobs cannot be scheduled more than #{MAX_DELAY_IN_MINUTES} minutes into the future.
|
132
133
|
See http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html
|
133
134
|
for further details!
|
134
135
|
MSG
|
135
|
-
raise RangeError
|
136
|
+
raise RangeError
|
136
137
|
end
|
137
|
-
delay = 0 if delay < 0
|
138
138
|
delay
|
139
139
|
end
|
140
140
|
|
@@ -145,7 +145,7 @@ for further details!
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def aws_sqs_client
|
148
|
-
Aws::SQS::Client.new(
|
148
|
+
@aws_sqs_client ||= Aws::SQS::Client.new(
|
149
149
|
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
150
150
|
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
|
151
151
|
region: ENV['AWS_REGION']
|
@@ -154,8 +154,8 @@ for further details!
|
|
154
154
|
|
155
155
|
def message_digest(messsage_body)
|
156
156
|
secret_key_base = Rails.application.secrets[:secret_key_base]
|
157
|
-
verifier
|
158
|
-
verifier.generate_digest(messsage_body)
|
157
|
+
@verifier ||= ActiveElasticJob::MessageVerifier.new(secret_key_base)
|
158
|
+
@verifier.generate_digest(messsage_body)
|
159
159
|
end
|
160
160
|
|
161
161
|
def verify_md5_digests!(response, messsage_body, message_attributes = nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_elastic_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tawan Sierek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|